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 2013/09/05 13:00:14 UTC
[1/2] ISIS-503: can now order contributed members
Updated Branches:
refs/heads/master 242739ad6 -> c009dec57
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionFilters.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionFilters.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionFilters.java
deleted file mode 100644
index 37036c0..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionFilters.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.metamodel.spec.feature;
-
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.filter.Filter;
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.ActionType;
-
-public class ObjectActionFilters {
-
- private ObjectActionFilters(){}
-
- @Deprecated
- public static final Filter<ObjectAction> WHEN_VISIBLE_IRRESPECTIVE_OF_WHERE = ObjectAction.Filters.WHEN_VISIBLE_IRRESPECTIVE_OF_WHERE;
-
- @Deprecated
- public static Filter<ObjectAction> dynamicallyVisible(final AuthenticationSession session, final ObjectAdapter target, final Where where) {
- return ObjectAction.Filters.dynamicallyVisible(session, target, where);
- }
-
- @Deprecated
- public static Filter<ObjectAction> withId(final String actionId) {
- return ObjectAction.Filters.withId(actionId);
- }
-
- @Deprecated
- public static Filter<ObjectAction> withNoValidationRules() {
- return ObjectAction.Filters.withNoValidationRules();
- }
-
- @Deprecated
- public static Filter<ObjectAction> filterOfType(final ActionType type) {
- return ObjectAction.Filters.ofType(type);
- }
-
- @Deprecated
- public static Filter<ObjectAction> bulk() {
- return ObjectAction.Filters.bulk();
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java
index 322e530..bd32a81 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.metamodel.spec.feature;
+import org.apache.isis.applib.filter.Filter;
import org.apache.isis.applib.profiles.Localization;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -128,4 +129,18 @@ public interface ObjectActionParameter extends ObjectFeature, CurrentHolder {
String isValid(ObjectAdapter adapter, Object proposedValue, Localization localization);
+
+ public static class Filters {
+ private Filters(){}
+
+ /**
+ * Filters only parameters that are for objects (ie 1:1 associations)
+ */
+ public static final Filter<ObjectActionParameter> PARAMETER_ASSOCIATIONS = new Filter<ObjectActionParameter>() {
+ @Override
+ public boolean accept(final ObjectActionParameter parameter) {
+ return parameter.getSpecification().isNotCollection();
+ }
+ };
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
index 284b1b9..8aee39d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
@@ -169,16 +169,12 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
/**
* Filters only properties that are visible statically, ie have not been
* unconditionally hidden at compile time.
- *
- * <p>
- * Note this list will include
- * properties marked as hidden once persisted and until persisted, but not
- * those marked hidden always.
*/
- public static final Filter<ObjectAssociation> WHEN_VISIBLE_IRRESPECTIVE_OF_WHERE = new Filter<ObjectAssociation>() {
+ public static final Filter<ObjectAssociation> VISIBLE_AT_LEAST_SOMETIMES = new Filter<ObjectAssociation>() {
@Override
public boolean accept(final ObjectAssociation property) {
- return !property.isAlwaysHidden();
+ final HiddenFacet hiddenFacet = property.getFacet(HiddenFacet.class);
+ return hiddenFacet == null || hiddenFacet.when() != When.ALWAYS || hiddenFacet.where() != Where.ANYWHERE;
}
};
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociationFilters.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociationFilters.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociationFilters.java
deleted file mode 100644
index 376fa63..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociationFilters.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.core.metamodel.spec.feature;
-
-
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.filter.Filter;
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-
-public class ObjectAssociationFilters {
-
- private ObjectAssociationFilters() {
- }
-
- @Deprecated
- public final static Filter<ObjectAssociation> PROPERTIES = ObjectAssociation.Filters.PROPERTIES;
-
- @Deprecated
- public final static Filter<ObjectAssociation> REFERENCE_PROPERTIES = ObjectAssociation.Filters.REFERENCE_PROPERTIES;
-
- @Deprecated
- public final static Filter<ObjectAssociation> WHERE_VISIBLE_IN_COLLECTION_TABLE = ObjectAssociation.Filters.WHERE_VISIBLE_IN_COLLECTION_TABLE;
-
- @Deprecated
- public final static Filter<ObjectAssociation> WHERE_VISIBLE_IN_STANDALONE_TABLE = ObjectAssociation.Filters.WHERE_VISIBLE_IN_STANDALONE_TABLE;
-
- @Deprecated
- public final static Filter<ObjectAssociation> ALL = ObjectAssociation.Filters.ALL;
-
- @Deprecated
- public final static Filter<ObjectAssociation> COLLECTIONS = ObjectAssociation.Filters.COLLECTIONS;
-
- @Deprecated
- public static final Filter<ObjectAssociation> WHEN_VISIBLE_IRRESPECTIVE_OF_WHERE = ObjectAssociation.Filters.WHEN_VISIBLE_IRRESPECTIVE_OF_WHERE;
-
- @Deprecated
- public static final Filter<ObjectAssociation> staticallyVisible(final Where context) {
- return ObjectAssociation.Filters.staticallyVisible(context);
- }
-
- @Deprecated
- public static Filter<ObjectAssociation> dynamicallyVisible(final AuthenticationSession session, final ObjectAdapter target, final Where where) {
- return ObjectAssociation.Filters.dynamicallyVisible(session, target, where);
- }
-
- @Deprecated
- public static Filter<ObjectAssociation> enabled(final AuthenticationSession session, final ObjectAdapter adapter, final Where where) {
- return ObjectAssociation.Filters.enabled(session, adapter, where);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
index 5e61774..609ce4d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
@@ -59,7 +59,7 @@ public interface ObjectMember extends ObjectFeature {
* <p>
* Determined as per the {@link HiddenFacet} being present and
* {@link HiddenFacet#when()} returning {@link When#ALWAYS}, and
- * {@link HiddenFacet#where()} NOT returning {@link When#NOWHERE}.
+ * {@link HiddenFacet#where()} returning {@link When#ANYWHERE}.
*/
boolean isAlwaysHidden();
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectParameterFilters.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectParameterFilters.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectParameterFilters.java
deleted file mode 100644
index 9d69add..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectParameterFilters.java
+++ /dev/null
@@ -1,39 +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.spec.feature;
-
-import org.apache.isis.applib.filter.Filter;
-
-public class ObjectParameterFilters {
-
- /**
- * Filters only parameters that are for objects (ie 1:1 associations)
- */
- public static final Filter<ObjectActionParameter> PARAMETER_ASSOCIATIONS = new Filter<ObjectActionParameter>() {
- @Override
- public boolean accept(final ObjectActionParameter parameter) {
- return parameter.getSpecification().isNotCollection();
- }
- };
-
- private ObjectParameterFilters() {
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
index 35e49fd..15bcdbd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
@@ -532,7 +532,7 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
final ObjectInstantiator objectInstantiator = getRuntimeContext().getObjectInstantiator();
// create contexts as inputs ...
- final SpecificationContext specContext = new SpecificationContext(getDeploymentCategory(), authenticationSessionProvider, servicesProvider, objectInstantiator, specificationLookup);
+ final SpecificationContext specContext = new SpecificationContext(getDeploymentCategory(), authenticationSessionProvider, servicesProvider, objectInstantiator, specificationLookup, facetProcessor);
final AdapterManager adapterMap = getRuntimeContext().getAdapterManager();
final ObjectMemberContext objectMemberContext = new ObjectMemberContext(getDeploymentCategory(), authenticationSessionProvider, specificationLookup, adapterMap, getRuntimeContext().getQuerySubmitter(), collectionTypeRegistry);
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
index 0ba8a87..20b026e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
@@ -45,6 +45,7 @@ import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessParameterContext;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
+import org.apache.isis.core.metamodel.facets.MemberOrderingFacetFactory;
import org.apache.isis.core.metamodel.facets.MethodFilteringFacetFactory;
import org.apache.isis.core.metamodel.facets.MethodPrefixBasedFacetFactory;
import org.apache.isis.core.metamodel.facets.MethodRemoverConstants;
@@ -52,7 +53,9 @@ import org.apache.isis.core.metamodel.facets.PropertyOrCollectionIdentifyingFace
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
import org.apache.isis.core.metamodel.runtimecontext.RuntimeContextAware;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
+import org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionContributee;
public class FacetProcessor implements RuntimeContextAware {
@@ -96,6 +99,15 @@ public class FacetProcessor implements RuntimeContextAware {
* If <tt>null</tt>, indicates that the cache hasn't been built.
*/
private List<MethodFilteringFacetFactory> cachedMethodFilteringFactories;
+
+ /**
+ * All registered {@link FacetFactory factories} that implement
+ * {@link MemberOrderingFacetFactory}.
+ *
+ * <p>
+ * If <tt>null</tt>, indicates that the cache hasn't been built.
+ */
+ private List<MemberOrderingFacetFactory> cachedMemberOrderingFactories;
/**
* All registered {@link FacetFactory factories} that implement
@@ -336,6 +348,16 @@ public class FacetProcessor implements RuntimeContextAware {
}
}
+
+ public void processMemberOrder(
+ final Properties metadataProperties,
+ final ObjectMember facetHolder) {
+ cacheMemberOrderingFacetFactoriesIfRequired();
+ for (final MemberOrderingFacetFactory facetFactory : cachedMemberOrderingFactories) {
+ facetFactory.process(new MemberOrderingFacetFactory.ProcessMemberContext(metadataProperties, facetHolder));
+ }
+ }
+
/**
* Attaches all facets applicable to the provided
* {@link FeatureType#ACTION_PARAMETER parameter}), to the supplied
@@ -364,6 +386,9 @@ public class FacetProcessor implements RuntimeContextAware {
}
}
+
+
+
private List<FacetFactory> getFactoryListByFeatureType(final FeatureType featureType) {
cacheByFeatureTypeIfRequired();
List<FacetFactory> list = factoryListByFeatureType.get(featureType);
@@ -417,6 +442,19 @@ public class FacetProcessor implements RuntimeContextAware {
}
}
+ private synchronized void cacheMemberOrderingFacetFactoriesIfRequired() {
+ if (cachedMemberOrderingFactories != null) {
+ return;
+ }
+ cachedMemberOrderingFactories = Lists.newArrayList();
+ for (final FacetFactory factory : factories) {
+ if (factory instanceof MemberOrderingFacetFactory) {
+ final MemberOrderingFacetFactory memberOrderingFacetFactory = (MemberOrderingFacetFactory) factory;
+ cachedMemberOrderingFactories.add(memberOrderingFacetFactory);
+ }
+ }
+ }
+
private synchronized void cachePropertyOrCollectionIdentifyingFacetFactoriesIfRequired() {
if (cachedPropertyOrCollectionIdentifyingFactories != null) {
return;
@@ -475,4 +513,5 @@ public class FacetProcessor implements RuntimeContextAware {
this.runtimeContext = runtimeContext;
}
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
index 374dea5..f8eef00 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
@@ -16,32 +16,23 @@
*/
package org.apache.isis.core.metamodel.specloader.specimpl;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Iterators;
import com.google.common.collect.Lists;
import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.filter.Filter;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.commons.exceptions.UnknownTypeException;
import org.apache.isis.core.commons.lang.CastUtils;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
-import org.apache.isis.core.metamodel.consent.InteractionResultSet;
-import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
-import org.apache.isis.core.metamodel.facets.TypedHolder;
-import org.apache.isis.core.metamodel.facets.actions.invoke.ActionInvocationFacet;
-import org.apache.isis.core.metamodel.facets.object.bounded.BoundedFacetUtils;
-import org.apache.isis.core.metamodel.facets.param.autocomplete.ActionParameterAutoCompleteFacet;
-import org.apache.isis.core.metamodel.interactions.InteractionUtils;
-import org.apache.isis.core.metamodel.interactions.ValidityContext;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
+import org.apache.isis.core.metamodel.facetapi.FacetUtil;
+import org.apache.isis.core.metamodel.facetapi.MultiTypedFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.core.metamodel.spec.feature.ObjectMemberContext;
@@ -51,6 +42,12 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
private final ObjectActionImpl serviceAction;
private final int contributeeParam;
private final ObjectSpecification contributeeType;
+
+ /**
+ * Hold facets rather than delegate to the contributed action (different types might
+ * use layout metadata to position the contributee in different ways)
+ */
+ private final FacetHolder facetHolder = new FacetHolderImpl();
/**
* Lazily initialized by {@link #getParameters()} (so don't use directly!)
@@ -72,6 +69,9 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
this.serviceAction = serviceAction;
this.contributeeType = contributeeType;
this.contributeeParam = contributeeParam;
+
+ // copy over facets from contributed to own.
+ FacetUtil.copyFacets(serviceAction.getFacetedMethod(), facetHolder);
}
@Override
@@ -162,6 +162,56 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
}
// //////////////////////////////////////
+ // FacetHolder
+ // //////////////////////////////////////
+
+ @Override
+ public Class<? extends Facet>[] getFacetTypes() {
+ return facetHolder.getFacetTypes();
+ }
+
+ @Override
+ public <T extends Facet> T getFacet(Class<T> cls) {
+ return facetHolder.getFacet(cls);
+ }
+
+ @Override
+ public boolean containsFacet(Class<? extends Facet> facetType) {
+ return facetHolder.containsFacet(facetType);
+ }
+
+ @Override
+ public boolean containsDoOpFacet(java.lang.Class<? extends Facet> facetType) {
+ return facetHolder.containsDoOpFacet(facetType);
+ }
+
+ @Override
+ public List<Facet> getFacets(Filter<Facet> filter) {
+ return facetHolder.getFacets(filter);
+ }
+
+ @Override
+ public void addFacet(Facet facet) {
+ facetHolder.addFacet(facet);
+ }
+
+ @Override
+ public void addFacet(MultiTypedFacet facet) {
+ facetHolder.addFacet(facet);
+ }
+
+ @Override
+ public void removeFacet(Facet facet) {
+ facetHolder.removeFacet(facet);
+ }
+
+ @Override
+ public void removeFacet(Class<? extends Facet> facetType) {
+ facetHolder.removeFacet(facetType);
+ }
+
+
+ // //////////////////////////////////////
static <T> T[] addElementToArray(T[] array, final int n, final T element, final T[] type) {
List<T> list = Lists.newArrayList(Arrays.asList(array));
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionImpl.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionImpl.java
index 1cbe6a8..3f8847e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionImpl.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionImpl.java
@@ -19,7 +19,6 @@
package org.apache.isis.core.metamodel.specloader.specimpl;
-import java.util.Collections;
import java.util.List;
import com.google.common.base.Objects;
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
index 6af5fdb..fb3f078 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberAbstract.java
@@ -208,7 +208,7 @@ public abstract class ObjectMemberAbstract implements ObjectMember {
@Override
public boolean isAlwaysHidden() {
final HiddenFacet hiddenFacet = getFacet(HiddenFacet.class);
- return hiddenFacet != null && hiddenFacet.when() == When.ALWAYS && hiddenFacet.where() != Where.NOWHERE;
+ return hiddenFacet != null && hiddenFacet.when() == When.ALWAYS && hiddenFacet.where() == Where.ANYWHERE;
}
/**
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index 58ece62..e358801 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -21,19 +21,19 @@ package org.apache.isis.core.metamodel.specloader.specimpl;
import java.util.Collections;
import java.util.List;
-import java.util.Map;
+import java.util.Properties;
import com.google.common.base.Function;
-import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.annotation.NotPersistable;
+import org.apache.isis.applib.annotation.When;
+import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.filter.Filter;
import org.apache.isis.applib.filter.Filters;
import org.apache.isis.applib.profiles.Localization;
@@ -49,6 +49,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
import org.apache.isis.core.metamodel.consent.InteractionResult;
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;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
@@ -88,15 +89,12 @@ import org.apache.isis.core.metamodel.spec.SpecificationContext;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionFilters;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActions;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.core.metamodel.spec.feature.ObjectMemberContext;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
import org.apache.isis.core.metamodel.specloader.specimpl.objectlist.ObjectSpecificationForFreeStandingList;
import org.apache.isis.core.progmodel.facets.actions.notcontributed.NotContributedFacet;
@@ -129,6 +127,13 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
private final ObjectInstantiator objectInstantiator;
private final SpecificationLoader specificationLookup;
+ private final FacetProcessor facetProcessor;
+
+ /**
+ * Only populated once {@link #introspectTypeHierarchyAndMembers()} is called.
+ */
+ protected Properties metadataProperties;
+
protected final ObjectMemberContext objectMemberContext;
@@ -168,13 +173,14 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
public ObjectSpecificationAbstract(
final Class<?> introspectedClass,
- final String shortName,
+ final String shortName,
final SpecificationContext specificationContext,
final ObjectMemberContext objectMemberContext) {
this.correspondingClass = introspectedClass;
this.fullName = introspectedClass.getName();
this.shortName = shortName;
+
this.isAbstract = JavaClassUtils.isAbstract(introspectedClass);
this.identifier = Identifier.classIdentifier(introspectedClass);
@@ -183,6 +189,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
this.servicesProvider = specificationContext.getServicesProvider();
this.objectInstantiator = specificationContext.getObjectInstantiator();
this.specificationLookup = specificationContext.getSpecificationLookup();
+ this.facetProcessor = specificationContext.getFacetProcessor();
this.objectMemberContext = objectMemberContext;
}
@@ -885,7 +892,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
if (specification == this) {
return;
}
- final List<ObjectAssociation> contributeeAssociations = findContributeeAssociations(serviceAdapter);
+ final List<ObjectAssociation> contributeeAssociations = createContributeeAssociations(serviceAdapter);
contributeeAssociationsToAppendTo.addAll(contributeeAssociations);
}
@@ -893,14 +900,14 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
* Synthesises {@link ObjectAssociation}s from matching {@link ObjectAction}s of any of the services
* that accept one parameter
*/
- private List<ObjectAssociation> findContributeeAssociations(final ObjectAdapter serviceAdapter) {
+ private List<ObjectAssociation> createContributeeAssociations(final ObjectAdapter serviceAdapter) {
final ObjectSpecification specification = serviceAdapter.getSpecification();
final List<ObjectAction> serviceActions = specification.getObjectActions(ActionType.USER, Contributed.INCLUDED, Filters.<ObjectAction>any());
final List<ObjectActionImpl> contributedActions = Lists.newArrayList();
for (final ObjectAction serviceAction : serviceActions) {
- if (serviceAction.isAlwaysHidden()) {
+ if (isAlwaysHidden(serviceAction)) {
continue;
}
final NotContributedFacet notContributed = serviceAction.getFacet(NotContributedFacet.class);
@@ -919,17 +926,23 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
contributedActions.add((ObjectActionImpl) serviceAction);
}
- return Lists.newArrayList(Iterables.transform(contributedActions, new Function<ObjectActionImpl, ObjectAssociation>(){
+ return Lists.newArrayList(Iterables.transform(contributedActions, createContributeeAssociationFunctor(serviceAdapter)));
+ }
+
+
+ private Function<ObjectActionImpl, ObjectAssociation> createContributeeAssociationFunctor(
+ final ObjectAdapter serviceAdapter) {
+ return new Function<ObjectActionImpl, ObjectAssociation>(){
@Override
public ObjectAssociation apply(ObjectActionImpl input) {
final ObjectSpecification returnType = input.getReturnType();
- if(returnType.isNotCollection()) {
- return new OneToOneAssociationContributee(serviceAdapter, input, objectMemberContext);
- } else {
- return new OneToManyAssociationContributee(serviceAdapter, input, objectMemberContext);
- }
+ final ObjectAssociationAbstract association = returnType.isNotCollection()
+ ? new OneToOneAssociationContributee(serviceAdapter, input, objectMemberContext)
+ : new OneToManyAssociationContributee(serviceAdapter, input, objectMemberContext);
+ facetProcessor.processMemberOrder(metadataProperties, association);
+ return association;
}
- }));
+ };
}
@@ -967,7 +980,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
final List<ObjectAction> contributeeActions = Lists.newArrayList();
final List<ObjectAction> serviceActions = specification.getObjectActions(ActionType.ALL, Contributed.INCLUDED, Filters.<ObjectAction>any());
for (final ObjectAction serviceAction : serviceActions) {
- if (serviceAction.isAlwaysHidden()) {
+ if (isAlwaysHidden(serviceAction)) {
continue;
}
final NotContributedFacet notContributed = serviceAction.getFacet(NotContributedFacet.class);
@@ -984,16 +997,19 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
if (contributeeParam != -1) {
ObjectActionContributee contributeeAction =
new ObjectActionContributee(serviceAdapter, contributedAction, contributeeParam, this, objectMemberContext);
-
+ facetProcessor.processMemberOrder(metadataProperties, contributeeAction);
contributeeActions.add(contributeeAction);
}
}
- // only add if there are matching subactions.
- if (contributeeActions.isEmpty()) {
- return;
- }
contributeeActionsToAppendTo.addAll(contributeeActions);
}
+
+ private boolean isAlwaysHidden(final FacetHolder holder) {
+ final HiddenFacet hiddenFacet = holder.getFacet(HiddenFacet.class);
+ return hiddenFacet != null && hiddenFacet.when() == When.ALWAYS && hiddenFacet.where() == Where.ANYWHERE;
+ }
+
+
/**
* @param the number of the parameter that matches, or -1 if none.
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
index 0c0534c..3883f8d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
@@ -16,9 +16,16 @@
*/
package org.apache.isis.core.metamodel.specloader.specimpl;
+import java.util.List;
+
import org.apache.isis.applib.annotation.Render;
+import org.apache.isis.applib.filter.Filter;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
+import org.apache.isis.core.metamodel.facetapi.FacetUtil;
+import org.apache.isis.core.metamodel.facetapi.MultiTypedFacet;
import org.apache.isis.core.metamodel.facets.members.resolve.RenderFacet;
import org.apache.isis.core.metamodel.facets.members.resolve.RenderFacetAbstract;
import org.apache.isis.core.metamodel.facets.notpersisted.NotPersistedFacet;
@@ -38,6 +45,12 @@ public class OneToManyAssociationContributee extends OneToManyAssociationImpl im
private final NotPersistedFacet notPersistedFacet;
private final TypeOfFacet typeOfFacet;
+ /**
+ * Hold facets rather than delegate to the contributed action (different types might
+ * use layout metadata to position the contributee in different ways)
+ */
+ private final FacetHolder facetHolder = new FacetHolderImpl();
+
private static ObjectSpecification typeOfSpec(final ObjectActionImpl objectAction, ObjectMemberContext objectMemberContext) {
final TypeOfFacet actionTypeOfFacet = objectAction.getFacet(TypeOfFacet.class);
return objectMemberContext.getSpecificationLookup().loadSpecification(actionTypeOfFacet.value());
@@ -51,6 +64,13 @@ public class OneToManyAssociationContributee extends OneToManyAssociationImpl im
renderFacet = new RenderFacetAbstract(Render.Type.EAGERLY, this) {};
notPersistedFacet = new NotPersistedFacetAbstract(this) {};
typeOfFacet = new TypeOfFacetAbstract(getSpecification().getCorrespondingClass(), this, objectMemberContext.getSpecificationLookup()) {};
+
+ // copy over facets from contributed to own.
+ FacetUtil.copyFacets(objectAction.getFacetedMethod(), facetHolder);
+
+ FacetUtil.addFacet(renderFacet);
+ FacetUtil.addFacet(notPersistedFacet);
+ FacetUtil.addFacet(typeOfFacet);
}
@@ -59,47 +79,55 @@ public class OneToManyAssociationContributee extends OneToManyAssociationImpl im
return objectAction.execute(serviceAdapter, new ObjectAdapter[]{ownerAdapter});
}
- @SuppressWarnings("unchecked")
+
+
+ // //////////////////////////////////////
+ // FacetHolder
+ // //////////////////////////////////////
+
@Override
- public <T extends Facet> T getFacet(Class<T> facetType) {
- if(facetType == RenderFacet.class) {
- return (T) renderFacet;
- }
- if(facetType == NotPersistedFacet.class) {
- return (T) notPersistedFacet;
- }
- if(facetType == TypeOfFacet.class) {
- return (T) typeOfFacet;
- }
- return super.getFacet(facetType);
+ public Class<? extends Facet>[] getFacetTypes() {
+ return facetHolder.getFacetTypes();
+ }
+
+ @Override
+ public <T extends Facet> T getFacet(Class<T> cls) {
+ return facetHolder.getFacet(cls);
}
@Override
public boolean containsFacet(Class<? extends Facet> facetType) {
- if(facetType == RenderFacet.class) {
- return true;
- }
- if(facetType == NotPersistedFacet.class) {
- return true;
- }
- if(facetType == TypeOfFacet.class) {
- return true;
- }
- return super.containsFacet(facetType);
+ return facetHolder.containsFacet(facetType);
+ }
+
+ @Override
+ public boolean containsDoOpFacet(java.lang.Class<? extends Facet> facetType) {
+ return facetHolder.containsDoOpFacet(facetType);
+ }
+
+ @Override
+ public List<Facet> getFacets(Filter<Facet> filter) {
+ return facetHolder.getFacets(filter);
+ }
+
+ @Override
+ public void addFacet(Facet facet) {
+ facetHolder.addFacet(facet);
+ }
+
+ @Override
+ public void addFacet(MultiTypedFacet facet) {
+ facetHolder.addFacet(facet);
}
@Override
- public boolean containsDoOpFacet(Class<? extends Facet> facetType) {
- if(facetType == RenderFacet.class) {
- return true;
- }
- if(facetType == NotPersistedFacet.class) {
- return true;
- }
- if(facetType == TypeOfFacet.class) {
- return true;
- }
- return super.containsDoOpFacet(facetType);
+ public void removeFacet(Facet facet) {
+ facetHolder.removeFacet(facet);
+ }
+
+ @Override
+ public void removeFacet(Class<? extends Facet> facetType) {
+ facetHolder.removeFacet(facetType);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
index 965df3f..a835a95 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
@@ -16,8 +16,15 @@
*/
package org.apache.isis.core.metamodel.specloader.specimpl;
+import java.util.List;
+
+import org.apache.isis.applib.filter.Filter;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
+import org.apache.isis.core.metamodel.facetapi.FacetUtil;
+import org.apache.isis.core.metamodel.facetapi.MultiTypedFacet;
import org.apache.isis.core.metamodel.facets.notpersisted.NotPersistedFacet;
import org.apache.isis.core.metamodel.facets.notpersisted.NotPersistedFacetAbstract;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -30,6 +37,12 @@ public class OneToOneAssociationContributee extends OneToOneAssociationImpl impl
private final NotPersistedFacet notPersistedFacet;
+ /**
+ * Hold facets rather than delegate to the contributed action (different types might
+ * use layout metadata to position the contributee in different ways)
+ */
+ private final FacetHolder facetHolder = new FacetHolderImpl();
+
public OneToOneAssociationContributee(
final ObjectAdapter serviceAdapter,
final ObjectActionImpl objectAction,
@@ -39,6 +52,10 @@ public class OneToOneAssociationContributee extends OneToOneAssociationImpl impl
this.objectAction = objectAction;
notPersistedFacet = new NotPersistedFacetAbstract(this) {};
+
+ // copy over facets from contributed to own.
+ FacetUtil.copyFacets(objectAction.getFacetedMethod(), facetHolder);
+ FacetUtil.addFacet(notPersistedFacet);
}
@Override
@@ -46,30 +63,58 @@ public class OneToOneAssociationContributee extends OneToOneAssociationImpl impl
return objectAction.execute(serviceAdapter, new ObjectAdapter[]{ownerAdapter});
}
- @SuppressWarnings("unchecked")
+
+
+
+
+
+ // //////////////////////////////////////
+ // FacetHolder
+ // //////////////////////////////////////
+
+ @Override
+ public Class<? extends Facet>[] getFacetTypes() {
+ return facetHolder.getFacetTypes();
+ }
+
@Override
public <T extends Facet> T getFacet(Class<T> cls) {
- if(cls == NotPersistedFacet.class) {
- return (T) notPersistedFacet;
- }
- return super.getFacet(cls);
+ return facetHolder.getFacet(cls);
}
@Override
public boolean containsFacet(Class<? extends Facet> facetType) {
- if(facetType == NotPersistedFacet.class) {
- return true;
- }
- return super.containsFacet(facetType);
+ return facetHolder.containsFacet(facetType);
+ }
+
+ @Override
+ public boolean containsDoOpFacet(java.lang.Class<? extends Facet> facetType) {
+ return facetHolder.containsDoOpFacet(facetType);
+ }
+
+ @Override
+ public List<Facet> getFacets(Filter<Facet> filter) {
+ return facetHolder.getFacets(filter);
+ }
+
+ @Override
+ public void addFacet(Facet facet) {
+ facetHolder.addFacet(facet);
+ }
+
+ @Override
+ public void addFacet(MultiTypedFacet facet) {
+ facetHolder.addFacet(facet);
}
@Override
- public boolean containsDoOpFacet(Class<? extends Facet> facetType) {
- if(facetType == NotPersistedFacet.class) {
- return true;
- }
- return super.containsDoOpFacet(facetType);
+ public void removeFacet(Facet facet) {
+ facetHolder.removeFacet(facet);
}
+ @Override
+ public void removeFacet(Class<? extends Facet> facetType) {
+ facetHolder.removeFacet(facetType);
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
----------------------------------------------------------------------
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 496f2fc..8322978 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
@@ -38,15 +38,12 @@ import org.apache.isis.applib.profiles.Perspective;
import org.apache.isis.core.commons.debug.DebugBuilder;
import org.apache.isis.core.commons.debug.DebuggableWithTitle;
import org.apache.isis.core.commons.exceptions.IsisException;
-import org.apache.isis.core.commons.exceptions.UnknownTypeException;
-import org.apache.isis.core.commons.lang.ListUtils;
import org.apache.isis.core.commons.lang.NameUtils;
import org.apache.isis.core.commons.lang.ToString;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
import org.apache.isis.core.metamodel.facets.ImperativeFacetUtils;
@@ -55,12 +52,10 @@ import org.apache.isis.core.metamodel.facets.named.NamedFacetInferred;
import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackUtils;
import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedCallbackFacet;
import org.apache.isis.core.metamodel.facets.object.icon.IconFacet;
-import org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet;
import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
import org.apache.isis.core.metamodel.facets.object.plural.PluralFacetInferred;
import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
-import org.apache.isis.core.metamodel.layout.DeweyOrderSet;
import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
import org.apache.isis.core.metamodel.spec.ActionType;
import org.apache.isis.core.metamodel.spec.ObjectInstantiationException;
@@ -72,8 +67,6 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.core.metamodel.spec.feature.ObjectMemberContext;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
import org.apache.isis.core.metamodel.specloader.specimpl.CreateObjectContext;
import org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder;
@@ -107,18 +100,19 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
private final IntrospectionContext introspectionContext;
private final CreateObjectContext createObjectContext;
- private FacetedMethodsBuilder facetedMethodsBuilder;
+ private final FacetedMethodsBuilder facetedMethodsBuilder;
- /**
- * Only populated once {@link #introspectTypeHierarchyAndMembers()} is called.
- */
- private Properties metadataProperties;
// //////////////////////////////////////////////////////////////////////
// Constructor
// //////////////////////////////////////////////////////////////////////
- public ObjectSpecificationDefault(final Class<?> correspondingClass, final FacetedMethodsBuilderContext facetedMethodsBuilderContext, final IntrospectionContext introspectionContext, final SpecificationContext specContext, final ObjectMemberContext objectMemberContext,
+ public ObjectSpecificationDefault(
+ final Class<?> correspondingClass,
+ final FacetedMethodsBuilderContext facetedMethodsBuilderContext,
+ final IntrospectionContext introspectionContext,
+ final SpecificationContext specContext,
+ final ObjectMemberContext objectMemberContext,
final CreateObjectContext createObjectContext) {
super(correspondingClass, determineShortName(correspondingClass), specContext, objectMemberContext);
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/objectlist/ObjectSpecificationForFreeStandingList.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/objectlist/ObjectSpecificationForFreeStandingList.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/objectlist/ObjectSpecificationForFreeStandingList.java
index e87f760..e6d7c25 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/objectlist/ObjectSpecificationForFreeStandingList.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/objectlist/ObjectSpecificationForFreeStandingList.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.specloader.specimpl.objectlist;
import java.util.Collections;
import java.util.List;
+import java.util.Properties;
import org.apache.isis.applib.profiles.Localization;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Dump.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Dump.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Dump.java
index 3b2995e..d14a468 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Dump.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Dump.java
@@ -173,7 +173,7 @@ public final class Dump {
}
debugBuilder.unindent();
- final List<ObjectAssociation> fields2 = specification.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.WHEN_VISIBLE_IRRESPECTIVE_OF_WHERE);
+ final List<ObjectAssociation> fields2 = specification.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.VISIBLE_AT_LEAST_SOMETIMES);
debugBuilder.appendln("Static");
debugBuilder.indent();
for (int i = 0; i < fields2.size(); i++) {
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/order/MemberOrderFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/order/MemberOrderFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/order/MemberOrderFacetFactory.java
index 52bafc3..7987ec5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/order/MemberOrderFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/order/MemberOrderFacetFactory.java
@@ -22,14 +22,16 @@ package org.apache.isis.core.progmodel.facets.members.order;
import java.util.Properties;
import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.Annotations;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.FacetedMethod;
+import org.apache.isis.core.metamodel.facets.MemberOrderingFacetFactory;
import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
+import org.apache.isis.core.metamodel.specloader.specimpl.ContributeeMember;
-public class MemberOrderFacetFactory extends FacetFactoryAbstract {
+public class MemberOrderFacetFactory extends FacetFactoryAbstract implements MemberOrderingFacetFactory {
public MemberOrderFacetFactory() {
super(FeatureType.MEMBERS);
@@ -38,18 +40,12 @@ public class MemberOrderFacetFactory extends FacetFactoryAbstract {
@Override
public void process(final ProcessMethodContext processMethodContext) {
- final FacetedMethod holder = processMethodContext.getFacetHolder();
-
- MemberOrderFacet memberOrderFacet = null;
- final Properties properties = processMethodContext.metadataProperties("memberOrder");
- if(properties != null) {
- memberOrderFacet = new MemberOrderFacetProperties(properties, holder);
- }
+ MemberOrderFacet memberOrderFacet = getMemberOrderFromMetadataPropertiesIfPossible(processMethodContext);
if(memberOrderFacet == null) {
final MemberOrder annotation = Annotations.getAnnotation(processMethodContext.getMethod(), MemberOrder.class);
if (annotation != null) {
- memberOrderFacet = new MemberOrderFacetAnnotation(annotation.name(), annotation.sequence(), holder);
+ memberOrderFacet = new MemberOrderFacetAnnotation(annotation.name(), annotation.sequence(), processMethodContext.getFacetHolder());
}
}
@@ -57,4 +53,30 @@ public class MemberOrderFacetFactory extends FacetFactoryAbstract {
FacetUtil.addFacet(memberOrderFacet);
}
+ /**
+ * For ordering of {@link ContributeeMember}s.
+ */
+ @Override
+ public void process(final ProcessMemberContext processMemberContext) {
+ final MemberOrderFacet memberOrderFacet = getMemberOrderFromMetadataPropertiesIfPossible(processMemberContext);
+
+ // no-op if facet is null
+ FacetUtil.addFacet(memberOrderFacet);
+ }
+
+ private static MemberOrderFacet getMemberOrderFromMetadataPropertiesIfPossible(final ProcessContextWithMetadataProperties<? extends FacetHolder> pcwmp) {
+
+ final FacetHolder holder = pcwmp.getFacetHolder();
+
+ final MemberOrderFacet memberOrderFacet;
+ final Properties properties = pcwmp.metadataProperties("memberOrder");
+ if(properties != null) {
+ memberOrderFacet = new MemberOrderFacetProperties(properties, holder);
+ } else {
+ memberOrderFacet = null;
+ }
+ return memberOrderFacet;
+ }
+
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/order/MemberOrderFacetProperties.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/order/MemberOrderFacetProperties.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/order/MemberOrderFacetProperties.java
index fde9ee8..b525971 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/order/MemberOrderFacetProperties.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/members/order/MemberOrderFacetProperties.java
@@ -22,11 +22,10 @@ package org.apache.isis.core.progmodel.facets.members.order;
import java.util.Properties;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.FacetedMethod;
public class MemberOrderFacetProperties extends MemberOrderFacetAbstract {
- public MemberOrderFacetProperties(Properties properties, FacetedMethod holder) {
+ public MemberOrderFacetProperties(Properties properties, FacetHolder holder) {
this(name(properties), sequence(properties), holder);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/membergroups/MemberGroupLayoutFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/membergroups/MemberGroupLayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/membergroups/MemberGroupLayoutFacetFactory.java
index e10f81a..daa7fd4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/membergroups/MemberGroupLayoutFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/membergroups/MemberGroupLayoutFacetFactory.java
@@ -38,7 +38,6 @@ import org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayo
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorVisiting;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorVisiting.Visitor;
@@ -117,7 +116,7 @@ public class MemberGroupLayoutFacetFactory extends FacetFactoryAbstract implemen
@SuppressWarnings("unchecked")
private int numCollectionsOf(ObjectSpecification objectSpec) {
List<ObjectAssociation> objectCollections = objectSpec.getAssociations(
- Contributed.EXCLUDED, Filters.and(ObjectAssociationFilters.staticallyVisible(Where.OBJECT_FORMS), ObjectAssociationFilters.COLLECTIONS));
+ Contributed.EXCLUDED, Filters.and(ObjectAssociation.Filters.staticallyVisible(Where.OBJECT_FORMS), ObjectAssociation.Filters.COLLECTIONS));
return objectCollections.size();
}
};
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/validprops/ObjectValidPropertiesFacetImpl.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/validprops/ObjectValidPropertiesFacetImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/validprops/ObjectValidPropertiesFacetImpl.java
index 71c19a1..35d5d3f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/validprops/ObjectValidPropertiesFacetImpl.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/validprops/ObjectValidPropertiesFacetImpl.java
@@ -25,7 +25,6 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
public class ObjectValidPropertiesFacetImpl extends ObjectValidPropertiesFacetAbstract {
@@ -45,7 +44,7 @@ public class ObjectValidPropertiesFacetImpl extends ObjectValidPropertiesFacetAb
public String invalidReason(final ObjectValidityContext context) {
final StringBuilder buf = new StringBuilder();
final ObjectAdapter adapter = context.getTarget();
- for (final ObjectAssociation property : adapter.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.PROPERTIES)) {
+ for (final ObjectAssociation property : adapter.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.PROPERTIES)) {
// ignore hidden properties
if (property.isVisible(context.getSession(), adapter, where).isVetoed()) {
continue;
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/test/java/org/apache/isis/core/metamodel/feature/ObjectAssociationFiltersTest_visibleWhere.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/feature/ObjectAssociationFiltersTest_visibleWhere.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/feature/ObjectAssociationFiltersTest_visibleWhere.java
index c8a37fe..03026ab 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/feature/ObjectAssociationFiltersTest_visibleWhere.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/feature/ObjectAssociationFiltersTest_visibleWhere.java
@@ -38,7 +38,6 @@ import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.filter.Filter;
import org.apache.isis.core.metamodel.facets.hide.HiddenFacet;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
@@ -115,7 +114,7 @@ public class ObjectAssociationFiltersTest_visibleWhere {
@Test
public void test() {
- final Filter<ObjectAssociation> filter = ObjectAssociationFilters.staticallyVisible(whereContext);
+ final Filter<ObjectAssociation> filter = ObjectAssociation.Filters.staticallyVisible(whereContext);
assertThat(filter.accept(mockObjectAssociation), is(expectedVisibility));
}
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/test/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociationFiltersTests.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociationFiltersTests.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociationFiltersTests.java
index 8b0ad6e..2587ec3 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociationFiltersTests.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociationFiltersTests.java
@@ -54,7 +54,7 @@ public class ObjectAssociationFiltersTests {
allowing(mockAssociation).isVisible(with(any(AuthenticationSession.class)), with(any(ObjectAdapter.class)), with(equalTo(Where.ANYWHERE)));
}
});
- final Filter<ObjectAssociation> filter = ObjectAssociationFilters.dynamicallyVisible(mockSession, mockTarget, Where.ANYWHERE);
+ final Filter<ObjectAssociation> filter = ObjectAssociation.Filters.dynamicallyVisible(mockSession, mockTarget, Where.ANYWHERE);
filter.accept(mockAssociation);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
index 8fa3a29..0bee5d1 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
@@ -142,7 +142,6 @@ public class ObjectAssociationAbstractTest {
@Test
public void notPersistedWhenDerived() throws Exception {
- // TODO: ISIS-5, need to reinstate DerivedFacet
final NotPersistedFacet mockFacet = mockFacetIgnoring(NotPersistedFacet.class);
facetedMethod.addFacet(mockFacet);
assertTrue(objectAssociation.isNotPersisted());
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
index b359387..b4cdf5a 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
@@ -60,7 +60,6 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
@Mock
private HiddenFacet facet;
-
public static class Customer {
private String firstName;
@@ -143,8 +142,6 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
{
allowing(facet).facetType();
will(returnValue(HiddenFacet.class));
- allowing(facet).when();
- will(returnValue(When.ALWAYS));
}
});
@@ -155,8 +152,12 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
public void alwaysHidden_forHiddenAlwaysEverywhere() throws Exception {
context.checking(new Expectations() {
{
+ allowing(facet).when();
+ will(returnValue(When.ALWAYS));
allowing(facet).where();
will(returnValue(Where.ANYWHERE));
+ allowing(facet).where();
+ will(returnValue(Where.OBJECT_FORMS));
}
});
facetedMethod.addFacet(facet);
@@ -168,20 +169,24 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
public void alwaysHidden_forHiddenAlwaysObjectForm() throws Exception {
context.checking(new Expectations() {
{
+ allowing(facet).when();
+ will(returnValue(When.ALWAYS));
allowing(facet).where();
will(returnValue(Where.OBJECT_FORMS));
}
});
facetedMethod.addFacet(facet);
- assertTrue(objectAssociation.isAlwaysHidden());
+ assertFalse(objectAssociation.isAlwaysHidden());
}
@Test
- public void alwaysHidden_forHiddenAlwaysNowhere() throws Exception {
+ public void alwaysHidden_forHiddenOncePersistedAnywhere() throws Exception {
context.checking(new Expectations() {
{
+ allowing(facet).when();
+ will(returnValue(When.ONCE_PERSISTED));
allowing(facet).where();
- will(returnValue(Where.NOWHERE));
+ will(returnValue(Where.ANYWHERE));
}
});
facetedMethod.addFacet(facet);
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
----------------------------------------------------------------------
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 97c1a7a..eb0a53b 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
@@ -52,7 +52,6 @@ import org.apache.isis.core.metamodel.spec.Persistability;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -160,7 +159,7 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
@SuppressWarnings("unchecked")
public List<OneToOneAssociation> getProperties(Contributed contributed) {
@SuppressWarnings("rawtypes")
- final List list = getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.PROPERTIES);
+ final List list = getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.PROPERTIES);
return new ArrayList<OneToOneAssociation>(list);
}
@@ -168,7 +167,7 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
@SuppressWarnings("unchecked")
public List<OneToManyAssociation> getCollections(Contributed contributed) {
@SuppressWarnings("rawtypes")
- final List list = getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.COLLECTIONS);
+ final List list = getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.COLLECTIONS);
return new ArrayList<OneToManyAssociation>(list);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
index 6d4f3c2..2453eee 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
@@ -68,7 +68,6 @@ import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
import org.apache.isis.core.metamodel.facets.object.publish.PublishedObjectFacet;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.DestroyObjectCommand;
import org.apache.isis.core.runtime.persistence.objectstore.transaction.PersistenceCommand;
@@ -858,7 +857,7 @@ public class IsisTransaction implements TransactionScopedComponent {
*/
public void enlistCreated(ObjectAdapter adapter) {
enlist(adapter, ChangeKind.CREATE);
- for (ObjectAssociation property : adapter.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.PROPERTIES)) {
+ for (ObjectAssociation property : adapter.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.PROPERTIES)) {
final AdapterAndProperty aap = AdapterAndProperty.of(adapter, property);
if(property.isNotPersisted()) {
continue;
@@ -881,7 +880,7 @@ public class IsisTransaction implements TransactionScopedComponent {
*/
public void enlistUpdating(ObjectAdapter adapter) {
enlist(adapter, ChangeKind.UPDATE);
- for (ObjectAssociation property : adapter.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.PROPERTIES)) {
+ for (ObjectAssociation property : adapter.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.PROPERTIES)) {
final AdapterAndProperty aap = AdapterAndProperty.of(adapter, property);
if(property.isNotPersisted()) {
continue;
@@ -904,7 +903,7 @@ public class IsisTransaction implements TransactionScopedComponent {
*/
public void enlistDeleting(ObjectAdapter adapter) {
enlist(adapter, ChangeKind.DELETE);
- for (ObjectAssociation property : adapter.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.PROPERTIES)) {
+ for (ObjectAssociation property : adapter.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.PROPERTIES)) {
final AdapterAndProperty aap = AdapterAndProperty.of(adapter, property);
if(property.isNotPersisted()) {
continue;
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
index 36db01e..48d6d96 100644
--- a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
+++ b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
@@ -458,19 +458,7 @@ public class ToDoItem implements Comparable<ToDoItem> /*, Locatable*/ { // GMAP3
public Collection<ToDoItem> choices0Remove() {
return getDependencies();
}
-
-
- // //////////////////////////////////////
- // SimilarItems (derived collection)
- // //////////////////////////////////////
-
-// @NotPersisted
-// @Render(Type.EAGERLY)
-// @CssClass("x-info")
-// public List<ToDoItem> getSimilarItems() {
-// return toDoItems.similarTo(this);
-// }
// //////////////////////////////////////
// Clone (action)
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.layout.json
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.layout.json b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.layout.json
index 576ae44..d6deec6 100644
--- a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.layout.json
+++ b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.layout.json
@@ -23,14 +23,17 @@
members: {
description: {},
category: {},
- subcategory: {},
+ subcategory: {
+ actions: {
+ updateCategory: {}
+ }
+ },
complete: {
actions: {
completed: {},
notYetCompleted: {}
}
- },
- rank: {}
+ }
}
},
Misc: {
@@ -45,6 +48,12 @@
memberGroups: {
Detail: {
members: {
+ priority: {
+ actions: {
+ previous: {},
+ next: {}
+ }
+ },
dueBy: {},
cost: {
actions: {
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItemContributions.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItemContributions.java b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItemContributions.java
index f0d45d0..ae8ae17 100644
--- a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItemContributions.java
+++ b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItemContributions.java
@@ -18,7 +18,6 @@
*/
package dom.todo;
-import java.util.Arrays;
import java.util.List;
import com.google.common.base.Function;
@@ -54,9 +53,8 @@ public class ToDoItemContributions extends AbstractFactoryAndRepository {
// priority (contributed property)
// //////////////////////////////////////
- @DescribedAs("The relative priority of this item compared to others (using 'due by' date)")
+ @DescribedAs("The relative priority of this item compared to others not yet complete (using 'due by' date)")
@NotInServiceMenu
- @MemberOrder(sequence="1")
@ActionSemantics(Of.SAFE)
@NotContributed(As.ACTION)
@Hidden(where=Where.ALL_TABLES)
@@ -65,15 +63,9 @@ public class ToDoItemContributions extends AbstractFactoryAndRepository {
return null;
}
- // sort items ...
- final List<ToDoItem> sortedNotYetComplete =
- ORDERING_DUE_BY
- .compound(ORDERING_DESCRIPTION)
- .sortedCopy(toDoItems.notYetComplete());
-
- // ... then locate this one
+ // sort items, then locate this one
int i=1;
- for (ToDoItem each : sortedNotYetComplete) {
+ for (ToDoItem each : sortedNotYetComplete()) {
if(each == toDoItem) {
return i;
}
@@ -82,6 +74,13 @@ public class ToDoItemContributions extends AbstractFactoryAndRepository {
return null;
}
+
+ private List<ToDoItem> sortedNotYetComplete() {
+ return ORDERING_DUE_BY
+ .compound(ORDERING_DESCRIPTION)
+ .sortedCopy(toDoItems.notYetComplete());
+ }
+
private static Ordering<ToDoItem> ORDERING_DUE_BY =
Ordering.natural().nullsLast().onResultOf(new Function<ToDoItem, LocalDate>(){
@Override
@@ -97,7 +96,38 @@ public class ToDoItemContributions extends AbstractFactoryAndRepository {
return input.getDescription();
}
});
+
+
+ // //////////////////////////////////////
+ // Next, Previous (contributed actions)
+ // //////////////////////////////////////
+
+ @DescribedAs("The next item not yet completed")
+ @NotInServiceMenu
+ @ActionSemantics(Of.SAFE)
+ @NotContributed(As.ASSOCIATION)
+ public ToDoItem next(final ToDoItem item) {
+ final Integer priority = priority(item);
+ int priorityOfNext = priority != null ? priority + 1 : 0;
+ return itemWithPriorityElse(priorityOfNext, item);
+ }
+ @DescribedAs("The previous item not yet completed")
+ @NotInServiceMenu
+ @ActionSemantics(Of.SAFE)
+ @NotContributed(As.ASSOCIATION)
+ public ToDoItem previous(final ToDoItem item) {
+ final Integer priority = priority(item);
+ int priorityOfPrevious = priority != null? priority - 1 : 0;
+ return itemWithPriorityElse(priorityOfPrevious, item);
+ }
+
+
+ private ToDoItem itemWithPriorityElse(int idx, final ToDoItem itemElse) {
+ final List<ToDoItem> items = sortedNotYetComplete();
+ return idx>=0 && items.size()>=idx? items.get(idx-1): itemElse;
+ }
+
// //////////////////////////////////////
// SimilarTo (contributed collection)
@@ -105,7 +135,6 @@ public class ToDoItemContributions extends AbstractFactoryAndRepository {
@NotInServiceMenu
@ActionSemantics(Of.SAFE)
- @MemberOrder(sequence="1")
@NotContributed(As.ACTION)
public List<ToDoItem> similarTo(final ToDoItem toDoItem) {
if(false) {
@@ -144,7 +173,6 @@ public class ToDoItemContributions extends AbstractFactoryAndRepository {
@DescribedAs("Update category and subcategory")
@NotInServiceMenu
@ActionSemantics(Of.IDEMPOTENT)
- @MemberOrder(name="Subcategory", sequence="1")
public ToDoItem updateCategory(
final ToDoItem item,
final @Named("Category") Category category,
[2/2] git commit: ISIS-503: can now order contributed members
Posted by da...@apache.org.
ISIS-503: can now order contributed members
* FacetProcessor extended to be able to request sorting on an individual object member
* introduced new MemberOrderingFacetFactory interface to identify the facet factories that do this work
* ObjectSpecDefault/Abstract now call the FacetProcessor whenever the contributed actions/associations are computed
* ObjectActionContributee, OneToOneAssociationContributee and OneToManyAssociationContributee now have their own copy of FacetHolderImpl (initialized with the facets from the underlying contributed action), so that can sort them without side-effects
* fixed bug such that contributed actions that are associated to contributed associations are also suppressed from the header
Also:
* ObjectAction.isAlwaysHidden redefined, only true if never visible anywhere and always
And also:
* renamed ObjectAssociationFilters -> ObjectAssociation.Filters
* renamed ObjectActionFilters -> ObjectAction.Filters
* renamed ObjectActionParameterFilters -> ObjectActionParameter.Filters
And also:
* enhanced ToDoItem to demonstrate this capability
* ToDoItemContributions#next and ToDoItemContributions#previous added
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/c009dec5
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/c009dec5
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/c009dec5
Branch: refs/heads/master
Commit: c009dec571e84de2ea304807d43558ec08212111
Parents: 242739a
Author: Dan Haywood <da...@apache.org>
Authored: Thu Sep 5 11:59:39 2013 +0100
Committer: Dan Haywood <da...@apache.org>
Committed: Thu Sep 5 11:59:39 2013 +0100
----------------------------------------------------------------------
...toryFromJdoColumnAnnotationFacetFactory.java | 3 +-
.../combined/FormWithTableSpecification.java | 3 +-
.../dnd/combined/SplitViewSpecification.java | 3 +-
.../dnd/combined/TwoPartViewSpecification.java | 3 +-
.../viewer/dnd/form/ExpandableViewBorder.java | 3 +-
.../dnd/table/AbstractTableSpecification.java | 3 +-
.../isis/viewer/dnd/table/TableAxisImpl.java | 3 +-
.../dnd/tree/ClosedObjectNodeSpecification.java | 3 +-
.../dnd/tree/OpenObjectNodeSpecification.java | 3 +-
.../viewer/dnd/view/action/OptionFactory.java | 1 -
.../dnd/view/composite/ObjectFieldBuilder.java | 3 +-
.../dnd/view/content/AbstractObjectContent.java | 5 +-
.../server/resources/DomainResourceHelper.java | 3 +-
.../scimpi/dispatcher/edit/EditAction.java | 3 +-
.../dispatcher/view/debug/DebugObjectView.java | 3 +-
.../view/display/AbstractFormView.java | 3 +-
.../view/display/AbstractTableView.java | 3 +-
.../dispatcher/view/display/LongFormView.java | 3 +-
.../scimpi/dispatcher/view/edit/EditObject.java | 3 +-
.../scimpi/dispatcher/view/simple/EditLink.java | 3 +-
.../dispatcher/view/simple/ObjectLink.java | 3 +-
.../dispatcher/view/simple/RemoveElement.java | 3 +-
.../wicket/model/models/BookmarkTreeNode.java | 3 +-
.../additionallinks/EntityActionUtil.java | 3 +-
.../CollectionContentsAsAjaxTablePanel.java | 9 +-
.../collections/EntityCollectionsPanel.java | 3 +-
.../entity/header/EntityHeaderPanel.java | 10 +--
.../entity/properties/EntityPropertiesForm.java | 5 +-
.../widgets/cssmenu/CssMenuBuilder.java | 4 +-
.../isis/core/metamodel/facetapi/FacetUtil.java | 8 ++
.../core/metamodel/facets/FacetFactory.java | 15 +++-
.../facets/MemberOrderingFacetFactory.java | 79 ++++++++++++++++
.../autocomplete/AutoCompleteFacetAbstract.java | 3 +-
.../json/LayoutMetadataReaderFromJson.java | 8 +-
.../DeveloperUtilitiesServiceDefault.java | 5 +-
.../metamodel/spec/SpecificationContext.java | 15 +++-
.../metamodel/spec/feature/ObjectAction.java | 8 +-
.../spec/feature/ObjectActionFilters.java | 58 ------------
.../spec/feature/ObjectActionParameter.java | 15 ++++
.../spec/feature/ObjectAssociation.java | 10 +--
.../spec/feature/ObjectAssociationFilters.java | 69 --------------
.../metamodel/spec/feature/ObjectMember.java | 2 +-
.../spec/feature/ObjectParameterFilters.java | 39 --------
.../specloader/ObjectReflectorDefault.java | 2 +-
.../facetprocessor/FacetProcessor.java | 39 ++++++++
.../specimpl/ObjectActionContributee.java | 80 +++++++++++++----
.../specloader/specimpl/ObjectActionImpl.java | 1 -
.../specimpl/ObjectMemberAbstract.java | 2 +-
.../specimpl/ObjectSpecificationAbstract.java | 64 ++++++++-----
.../OneToManyAssociationContributee.java | 94 +++++++++++++-------
.../OneToOneAssociationContributee.java | 73 ++++++++++++---
.../dflt/ObjectSpecificationDefault.java | 20 ++---
.../ObjectSpecificationForFreeStandingList.java | 1 +
.../apache/isis/core/metamodel/util/Dump.java | 2 +-
.../members/order/MemberOrderFacetFactory.java | 42 ++++++---
.../order/MemberOrderFacetProperties.java | 3 +-
.../MemberGroupLayoutFacetFactory.java | 3 +-
.../ObjectValidPropertiesFacetImpl.java | 3 +-
...jectAssociationFiltersTest_visibleWhere.java | 3 +-
.../feature/ObjectAssociationFiltersTests.java | 2 +-
.../specimpl/ObjectAssociationAbstractTest.java | 1 -
...ectAssociationAbstractTest_alwaysHidden.java | 17 ++--
.../testspec/ObjectSpecificationStub.java | 5 +-
.../system/transaction/IsisTransaction.java | 7 +-
.../dom/src/main/java/dom/todo/ToDoItem.java | 12 ---
.../src/main/java/dom/todo/ToDoItem.layout.json | 15 +++-
.../java/dom/todo/ToDoItemContributions.java | 54 ++++++++---
67 files changed, 560 insertions(+), 422 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java
index ce668ae..d03d51d 100644
--- a/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java
+++ b/component/objectstore/jdo/jdo-metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java
@@ -36,7 +36,6 @@ import org.apache.isis.core.metamodel.facets.mandatory.MandatoryFacetDefault;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorVisiting;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorVisiting.Visitor;
@@ -119,7 +118,7 @@ public class MandatoryFromJdoColumnAnnotationFacetFactory extends FacetFactoryAb
private void validate(ObjectSpecification objectSpec, ValidationFailures validationFailures) {
- List<ObjectAssociation> associations = objectSpec.getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.PROPERTIES);
+ List<ObjectAssociation> associations = objectSpec.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.PROPERTIES);
for (ObjectAssociation association : associations) {
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/combined/FormWithTableSpecification.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/combined/FormWithTableSpecification.java b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/combined/FormWithTableSpecification.java
index b8a5552..4c10e78 100644
--- a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/combined/FormWithTableSpecification.java
+++ b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/combined/FormWithTableSpecification.java
@@ -27,7 +27,6 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.dnd.form.FormSpecification;
import org.apache.isis.viewer.dnd.table.InternalTableSpecification;
@@ -77,7 +76,7 @@ public class FormWithTableSpecification extends SplitViewSpecification {
final ObjectSpecification spec = content.getSpecification();
final ObjectAdapter target = content.getAdapter();
final AuthenticationSession session = IsisContext.getAuthenticationSession();
- final List<ObjectAssociation> fields = spec.getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.dynamicallyVisible(session, target, where));
+ final List<ObjectAssociation> fields = spec.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.dynamicallyVisible(session, target, where));
for (final ObjectAssociation field : fields) {
if (field.isOneToManyAssociation()) {
return Toolkit.getContentFactory().createFieldContent(field, target);
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/combined/SplitViewSpecification.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/combined/SplitViewSpecification.java b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/combined/SplitViewSpecification.java
index 02fbe5f..66c5a4e 100644
--- a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/combined/SplitViewSpecification.java
+++ b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/combined/SplitViewSpecification.java
@@ -28,7 +28,6 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.dnd.view.Axes;
import org.apache.isis.viewer.dnd.view.Content;
@@ -76,7 +75,7 @@ public abstract class SplitViewSpecification extends CompositeViewSpecification
final ObjectSpecification spec = content.getSpecification();
final ObjectAdapter target = content.getAdapter();
final AuthenticationSession session = IsisContext.getAuthenticationSession();
- final List<ObjectAssociation> fields = spec.getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.dynamicallyVisible(session, target, where));
+ final List<ObjectAssociation> fields = spec.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.dynamicallyVisible(session, target, where));
final List<ObjectAssociation> selectableFields = new ArrayList<ObjectAssociation>();
for (final ObjectAssociation field : fields) {
if (validField(field)) {
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/combined/TwoPartViewSpecification.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/combined/TwoPartViewSpecification.java b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/combined/TwoPartViewSpecification.java
index 9c472f0..302451e 100644
--- a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/combined/TwoPartViewSpecification.java
+++ b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/combined/TwoPartViewSpecification.java
@@ -26,7 +26,6 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.dnd.form.FormSpecification;
import org.apache.isis.viewer.dnd.form.InternalFormSpecification;
@@ -70,7 +69,7 @@ public class TwoPartViewSpecification extends SplitViewSpecification {
final ObjectSpecification spec = content.getSpecification();
final ObjectAdapter target = content.getAdapter();
final AuthenticationSession session = IsisContext.getAuthenticationSession();
- final List<ObjectAssociation> fields = spec.getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.dynamicallyVisible(session, target, where));
+ final List<ObjectAssociation> fields = spec.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.dynamicallyVisible(session, target, where));
for (final ObjectAssociation field : fields) {
if (validField(field)) {
return Toolkit.getContentFactory().createFieldContent(field, target);
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/form/ExpandableViewBorder.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/form/ExpandableViewBorder.java b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/form/ExpandableViewBorder.java
index 46f911f..ff9a757 100644
--- a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/form/ExpandableViewBorder.java
+++ b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/form/ExpandableViewBorder.java
@@ -28,7 +28,6 @@ import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetUtils;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.dnd.drawing.Canvas;
@@ -206,7 +205,7 @@ public class ExpandableViewBorder extends AbstractBorder {
private int canOpenObject(final Content content) {
final ObjectAdapter object = ((ObjectContent) content).getObject();
if (object != null) {
- final List<ObjectAssociation> fields = object.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.dynamicallyVisible(IsisContext.getAuthenticationSession(), object, where));
+ final List<ObjectAssociation> fields = object.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.dynamicallyVisible(IsisContext.getAuthenticationSession(), object, where));
for (int i = 0; i < fields.size(); i++) {
if (fields.get(i).isOneToManyAssociation()) {
return CAN_OPEN;
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/table/AbstractTableSpecification.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/table/AbstractTableSpecification.java b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/table/AbstractTableSpecification.java
index 911904c..427925f 100644
--- a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/table/AbstractTableSpecification.java
+++ b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/table/AbstractTableSpecification.java
@@ -24,7 +24,6 @@ import java.util.List;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.viewer.dnd.view.Axes;
import org.apache.isis.viewer.dnd.view.Content;
import org.apache.isis.viewer.dnd.view.View;
@@ -80,7 +79,7 @@ public abstract class AbstractTableSpecification extends CompositeViewSpecificat
} else {
final CollectionContent collectionContent = (CollectionContent) requirement.getContent();
final ObjectSpecification elementSpecification = collectionContent.getElementSpecification();
- final List<ObjectAssociation> fields = elementSpecification.getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.WHEN_VISIBLE_IRRESPECTIVE_OF_WHERE);
+ final List<ObjectAssociation> fields = elementSpecification.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.VISIBLE_AT_LEAST_SOMETIMES);
for (int i = 0; i < fields.size(); i++) {
if (fields.get(i).isOneToOneAssociation()) {
return true;
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/table/TableAxisImpl.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/table/TableAxisImpl.java b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/table/TableAxisImpl.java
index 91c8666..8df3255 100644
--- a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/table/TableAxisImpl.java
+++ b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/table/TableAxisImpl.java
@@ -27,7 +27,6 @@ import org.apache.isis.core.commons.lang.ToString;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.viewer.dnd.view.View;
import org.apache.isis.viewer.dnd.view.collection.CollectionContent;
@@ -43,7 +42,7 @@ public class TableAxisImpl implements TableAxis {
// TODO create axis first, then after view built set up the axis
// details?
final ObjectSpecification elementSpecification = (content).getElementSpecification();
- final List<ObjectAssociation> accessibleFields = elementSpecification.getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.WHEN_VISIBLE_IRRESPECTIVE_OF_WHERE);
+ final List<ObjectAssociation> accessibleFields = elementSpecification.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.VISIBLE_AT_LEAST_SOMETIMES);
this.columns = tableFields(accessibleFields, content);
widths = new int[columns.size()];
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/ClosedObjectNodeSpecification.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/ClosedObjectNodeSpecification.java b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/ClosedObjectNodeSpecification.java
index 31eafae..2363173 100644
--- a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/ClosedObjectNodeSpecification.java
+++ b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/ClosedObjectNodeSpecification.java
@@ -26,7 +26,6 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facets.object.bounded.BoundedFacetUtils;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.dnd.view.Axes;
import org.apache.isis.viewer.dnd.view.Content;
@@ -68,7 +67,7 @@ class ClosedObjectNodeSpecification extends NodeSpecification {
@Override
public int canOpen(final Content content) {
final ObjectAdapter object = ((ObjectContent) content).getObject();
- final List<ObjectAssociation> fields = object.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.dynamicallyVisible(IsisContext.getAuthenticationSession(), object, where));
+ final List<ObjectAssociation> fields = object.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.dynamicallyVisible(IsisContext.getAuthenticationSession(), object, where));
for (int i = 0; i < fields.size(); i++) {
if (fields.get(i).isOneToManyAssociation()) {
return CAN_OPEN;
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/OpenObjectNodeSpecification.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/OpenObjectNodeSpecification.java b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/OpenObjectNodeSpecification.java
index 6d325c1..43e3a71 100644
--- a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/OpenObjectNodeSpecification.java
+++ b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/OpenObjectNodeSpecification.java
@@ -25,7 +25,6 @@ import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.dnd.view.Axes;
import org.apache.isis.viewer.dnd.view.Content;
@@ -72,7 +71,7 @@ public class OpenObjectNodeSpecification extends CompositeNodeSpecification {
public boolean canDisplay(final ViewRequirement requirement) {
if (requirement.isObject() && requirement.hasReference()) {
final ObjectAdapter object = requirement.getAdapter();
- final List<ObjectAssociation> fields = object.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.dynamicallyVisible(IsisContext.getAuthenticationSession(), object, where));
+ final List<ObjectAssociation> fields = object.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.dynamicallyVisible(IsisContext.getAuthenticationSession(), object, where));
for (int i = 0; i < fields.size(); i++) {
if (fields.get(i).isOneToManyAssociation()) {
return true;
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/view/action/OptionFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/view/action/OptionFactory.java b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/view/action/OptionFactory.java
index 19b45b8..55c9e56 100644
--- a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/view/action/OptionFactory.java
+++ b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/view/action/OptionFactory.java
@@ -19,7 +19,6 @@
package org.apache.isis.viewer.dnd.view.action;
-import java.util.Arrays;
import java.util.List;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/view/composite/ObjectFieldBuilder.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/view/composite/ObjectFieldBuilder.java b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/view/composite/ObjectFieldBuilder.java
index 458babb..b8f2d9f 100644
--- a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/view/composite/ObjectFieldBuilder.java
+++ b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/view/composite/ObjectFieldBuilder.java
@@ -33,7 +33,6 @@ import org.apache.isis.core.metamodel.adapter.util.AdapterUtils;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.dnd.view.Axes;
import org.apache.isis.viewer.dnd.view.Content;
@@ -73,7 +72,7 @@ public class ObjectFieldBuilder extends AbstractViewBuilder {
LOG.debug("build view " + view + " for " + object);
final ObjectSpecification spec = object.getSpecification();
- final Filter<ObjectAssociation> filter = ObjectAssociationFilters.dynamicallyVisible(IsisContext.getAuthenticationSession(), object, where);
+ final Filter<ObjectAssociation> filter = ObjectAssociation.Filters.dynamicallyVisible(IsisContext.getAuthenticationSession(), object, where);
final List<ObjectAssociation> flds = spec.getAssociations(Contributed.EXCLUDED, filter);
if (view.getSubviews().length == 0) {
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/view/content/AbstractObjectContent.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/view/content/AbstractObjectContent.java b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/view/content/AbstractObjectContent.java
index 1b12ac6..6586e08 100644
--- a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/view/content/AbstractObjectContent.java
+++ b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/view/content/AbstractObjectContent.java
@@ -38,7 +38,6 @@ import org.apache.isis.core.metamodel.spec.Persistability;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.persistence.Persistor;
@@ -168,7 +167,7 @@ public abstract class AbstractObjectContent extends AbstractContent implements O
// TODO: use Facet for this test instead.
return new Veto("Can't set field in persistent object with reference to non-persistent object");
}
- final List<ObjectAssociation> fields = targetAdapter.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.dynamicallyVisible(IsisContext.getAuthenticationSession(), targetAdapter, where));
+ final List<ObjectAssociation> fields = targetAdapter.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.dynamicallyVisible(IsisContext.getAuthenticationSession(), targetAdapter, where));
for (final ObjectAssociation fld : fields) {
if (!fld.isOneToOneAssociation()) {
continue;
@@ -216,7 +215,7 @@ public abstract class AbstractObjectContent extends AbstractContent implements O
return action.execute(target, new ObjectAdapter[] { source });
}
- final List<ObjectAssociation> associations = target.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.dynamicallyVisible(IsisContext.getAuthenticationSession(), target, where));
+ final List<ObjectAssociation> associations = target.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.dynamicallyVisible(IsisContext.getAuthenticationSession(), target, where));
for (int i = 0; i < associations.size(); i++) {
final ObjectAssociation association = associations.get(i);
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
index b76261e..4c8a2e4 100644
--- a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
+++ b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/resources/DomainResourceHelper.java
@@ -46,7 +46,6 @@ import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -104,7 +103,7 @@ public final class DomainResourceHelper {
static boolean copyOverProperties(final RendererContext resourceContext, final ObjectAdapter objectAdapter, final JsonRepresentation propertiesList) {
final ObjectSpecification objectSpec = objectAdapter.getSpecification();
- final List<ObjectAssociation> properties = objectSpec.getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.PROPERTIES);
+ final List<ObjectAssociation> properties = objectSpec.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.PROPERTIES);
boolean allOk = true;
for (final ObjectAssociation association : properties) {
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/EditAction.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/EditAction.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/EditAction.java
index 5c999dd..d069ea3 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/EditAction.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/edit/EditAction.java
@@ -36,7 +36,6 @@ import org.apache.isis.core.metamodel.facets.object.parseable.TextEntryParseExce
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.transaction.MessageBroker;
@@ -79,7 +78,7 @@ public class EditAction implements Action {
final ObjectAdapter adapter = context.getMappedObject(objectId);
- final List<ObjectAssociation> fields = adapter.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.dynamicallyVisible(session, adapter, where));
+ final List<ObjectAssociation> fields = adapter.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.dynamicallyVisible(session, adapter, where));
for (final ObjectAssociation objectAssociation : fields) {
if (objectAssociation.isVisible(session, adapter, where).isVetoed()) {
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebugObjectView.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebugObjectView.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebugObjectView.java
index 75b82d5..020377d 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebugObjectView.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/DebugObjectView.java
@@ -28,7 +28,6 @@ import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.scimpi.dispatcher.AbstractObjectProcessor;
import org.apache.isis.viewer.scimpi.dispatcher.context.RequestContext.Scope;
@@ -60,7 +59,7 @@ public class DebugObjectView extends AbstractObjectProcessor {
request.appendAsHtmlEncoded("#" + version.sequence() + " - " + version.getUser() + " (" + version.getTime() + ")" );
request.appendHtml("</div>");
- final List<ObjectAssociation> fields = specification.getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.ALL);
+ final List<ObjectAssociation> fields = specification.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.ALL);
int row = 1;
for (int i = 0; i < fields.size(); i++) {
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractFormView.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractFormView.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractFormView.java
index 0c4d0f0..e88f89a 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractFormView.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractFormView.java
@@ -27,7 +27,6 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.scimpi.dispatcher.AbstractObjectProcessor;
import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
@@ -61,7 +60,7 @@ public abstract class AbstractFormView extends AbstractObjectProcessor {
request.processUtilCloseTag();
final AuthenticationSession session = IsisContext.getAuthenticationSession();
- List<ObjectAssociation> associations = object.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.dynamicallyVisible(session, object, Where.OBJECT_FORMS));
+ List<ObjectAssociation> associations = object.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.dynamicallyVisible(session, object, Where.OBJECT_FORMS));
final List<ObjectAssociation> fields = tag.includedFields(associations);
final LinkedObject[] linkFields = tag.linkedFields(fields);
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractTableView.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractTableView.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractTableView.java
index ed87e18..e5a2887 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractTableView.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/AbstractTableView.java
@@ -29,7 +29,6 @@ import org.apache.isis.core.metamodel.facets.typeof.TypeOfFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.persistence.Persistor;
import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
@@ -89,7 +88,7 @@ public abstract class AbstractTableView extends AbstractElementProcessor {
rowClasses = rowClassesList.split("[,|/]");
}
- final List<ObjectAssociation> allFields = elementSpec.getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.WHEN_VISIBLE_IRRESPECTIVE_OF_WHERE);
+ final List<ObjectAssociation> allFields = elementSpec.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.VISIBLE_AT_LEAST_SOMETIMES);
final TableContentWriter rowBuilder = createRowBuilder(request, context, isFieldEditable ? parentObjectId : null, allFields, collection);
write(request, collection, summary, rowBuilder, tableId, tableClass, rowClasses);
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/LongFormView.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/LongFormView.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/LongFormView.java
index 0ea6d5a..5630bcb 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/LongFormView.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/display/LongFormView.java
@@ -25,7 +25,6 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
import org.apache.isis.viewer.scimpi.dispatcher.view.display.TableView.SimpleTableBuilder;
@@ -47,7 +46,7 @@ public class LongFormView extends AbstractFormView {
IsisContext.getPersistenceSession().resolveField(object, field);
final ObjectAdapter collection = field.get(object);
final ObjectSpecification elementSpec = collection.getElementSpecification();
- final List<ObjectAssociation> fields = elementSpec.getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.WHEN_VISIBLE_IRRESPECTIVE_OF_WHERE);
+ final List<ObjectAssociation> fields = elementSpec.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.VISIBLE_AT_LEAST_SOMETIMES);
if (noColumnsString.equalsIgnoreCase("all")) {
noColumns = fields.size();
} else {
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/edit/EditObject.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/edit/EditObject.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/edit/EditObject.java
index fb35349..90dd604 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/edit/EditObject.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/edit/EditObject.java
@@ -30,7 +30,6 @@ import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.progmodel.facets.object.choices.enums.EnumFacet;
import org.apache.isis.core.progmodel.facets.value.booleans.BooleanValueFacet;
import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -113,7 +112,7 @@ public class EditObject extends AbstractElementProcessor {
request.processUtilCloseTag();
final AuthenticationSession session = IsisContext.getAuthenticationSession();
- List<ObjectAssociation> viewFields = specification.getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.dynamicallyVisible(session, object, where));
+ List<ObjectAssociation> viewFields = specification.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.dynamicallyVisible(session, object, where));
viewFields = containedBlock.includedFields(viewFields);
final InputField[] formFields = createFields(viewFields);
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/EditLink.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/EditLink.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/EditLink.java
index e7e6162..ab43eb6 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/EditLink.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/EditLink.java
@@ -29,7 +29,6 @@ import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.scimpi.dispatcher.Dispatcher;
import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
@@ -47,7 +46,7 @@ public class EditLink extends AbstractLink {
protected boolean valid(final Request request, final ObjectAdapter adapter) {
final ObjectSpecification specification = adapter.getSpecification();
final AuthenticationSession session = IsisContext.getAuthenticationSession();
- final List<ObjectAssociation> visibleFields = specification.getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.dynamicallyVisible(session, adapter, where));
+ final List<ObjectAssociation> visibleFields = specification.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.dynamicallyVisible(session, adapter, where));
final ImmutableFacet facet = specification.getFacet(ImmutableFacet.class);
final boolean isImmutable = facet != null && facet.when() == When.ALWAYS;
final boolean isImmutableOncePersisted = facet != null && facet.when() == When.ONCE_PERSISTED && adapter.representsPersistent();
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/ObjectLink.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/ObjectLink.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/ObjectLink.java
index cbd2900..f2726bf 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/ObjectLink.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/ObjectLink.java
@@ -26,7 +26,6 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.scimpi.dispatcher.Dispatcher;
import org.apache.isis.viewer.scimpi.dispatcher.processor.Request;
@@ -43,7 +42,7 @@ public class ObjectLink extends AbstractLink {
@Override
protected boolean valid(final Request request, final ObjectAdapter object) {
final AuthenticationSession session = IsisContext.getAuthenticationSession();
- final List<ObjectAssociation> visibleFields = object.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.dynamicallyVisible(session, object, where));
+ final List<ObjectAssociation> visibleFields = object.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.dynamicallyVisible(session, object, where));
return visibleFields.size() > 0;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/RemoveElement.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/RemoveElement.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/RemoveElement.java
index d0f7fd5..56ed442 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/RemoveElement.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/simple/RemoveElement.java
@@ -28,7 +28,6 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.consent.Consent;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.scimpi.dispatcher.AbstractElementProcessor;
@@ -133,7 +132,7 @@ public class RemoveElement extends AbstractElementProcessor {
// TODO check is valid to remove element
final AuthenticationSession session = IsisContext.getAuthenticationSession();
- final Filter<ObjectAssociation> filter = ObjectAssociationFilters.dynamicallyVisible(session, adapter, where);
+ final Filter<ObjectAssociation> filter = ObjectAssociation.Filters.dynamicallyVisible(session, adapter, where);
final List<ObjectAssociation> visibleFields = adapter.getSpecification().getAssociations(Contributed.EXCLUDED, filter);
if (visibleFields.size() == 0) {
return false;
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkTreeNode.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkTreeNode.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkTreeNode.java
index fa99d00..a4cda1c 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkTreeNode.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkTreeNode.java
@@ -32,7 +32,6 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.wicket.model.mementos.PageParameterNames;
@@ -116,7 +115,7 @@ public class BookmarkTreeNode implements Serializable {
if(candidateBookmarkableModel instanceof EntityModel) {
EntityModel entityModel = (EntityModel) candidateBookmarkableModel;
final ObjectAdapter candidateAdapter = entityModel.getObject();
- final List<ObjectAssociation> properties = candidateAdapter.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.REFERENCE_PROPERTIES);
+ final List<ObjectAssociation> properties = candidateAdapter.getSpecification().getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.REFERENCE_PROPERTIES);
for (ObjectAssociation objectAssoc : properties) {
final ObjectAdapter possibleParentAdapter = objectAssoc.get(candidateAdapter);
if(possibleParentAdapter == null) {
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java
index 9c6fe5a..dac7df2 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/EntityActionUtil.java
@@ -40,7 +40,6 @@ import org.apache.isis.core.metamodel.spec.ActionType;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionFilters;
import org.apache.isis.core.metamodel.spec.feature.ObjectActions;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
@@ -86,7 +85,7 @@ public final class EntityActionUtil {
private static Filter<ObjectAction> dynamicallyVisibleFor(final ObjectAdapter adapter) {
final AuthenticationSessionProvider asa = (AuthenticationSessionProvider) Session.get();
AuthenticationSession authSession = asa.getAuthenticationSession();
- return ObjectActionFilters.dynamicallyVisible(authSession, adapter, Where.ANYWHERE);
+ return ObjectAction.Filters.dynamicallyVisible(authSession, adapter, Where.ANYWHERE);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
index d808f00..0becb33 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
@@ -43,10 +43,7 @@ import org.apache.isis.core.metamodel.spec.ActionType;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionFilters;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActions;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.wicket.model.common.SelectionHandler;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
@@ -66,7 +63,7 @@ import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
*/
public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityCollectionModel> {
- private static final Predicate<ObjectAction> BULK = Filters.asPredicate(ObjectActionFilters.bulk());
+ private static final Predicate<ObjectAction> BULK = Filters.asPredicate(ObjectAction.Filters.bulk());
private static final long serialVersionUID = 1L;
@@ -198,8 +195,8 @@ public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityColl
@SuppressWarnings("unchecked")
final Filter<ObjectAssociation> filter = Filters.and(
- ObjectAssociationFilters.PROPERTIES,
- ObjectAssociationFilters.staticallyVisible(getModel().isParented()? Where.PARENTED_TABLES: Where.STANDALONE_TABLES),
+ ObjectAssociation.Filters.PROPERTIES,
+ ObjectAssociation.Filters.staticallyVisible(getModel().isParented()? Where.PARENTED_TABLES: Where.STANDALONE_TABLES),
associationDoesNotReferenceParent(parentSpecIfAny));
final List<? extends ObjectAssociation> propertyList = typeOfSpec.getAssociations(Contributed.INCLUDED, filter);
for (final ObjectAssociation property : propertyList) {
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
index 34651ee..d255445 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
@@ -34,7 +34,6 @@ import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.ui.components.collection.CollectionPanel;
@@ -124,7 +123,7 @@ public class EntityCollectionsPanel extends PanelAbstract<EntityModel> {
@SuppressWarnings("unchecked")
private Filter<ObjectAssociation> visibleCollectionsFilter(final ObjectAdapter adapter) {
- return Filters.and(ObjectAssociationFilters.COLLECTIONS, ObjectAssociationFilters.dynamicallyVisible(getAuthenticationSession(), adapter, Where.PARENTED_TABLES));
+ return Filters.and(ObjectAssociation.Filters.COLLECTIONS, ObjectAssociation.Filters.dynamicallyVisible(getAuthenticationSession(), adapter, Where.PARENTED_TABLES));
}
private void requestRepaintPanel(final AjaxRequestTarget target) {
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
index 5cb0729..9593147 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
@@ -36,8 +36,6 @@ import org.apache.isis.core.metamodel.spec.ActionType;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionFilters;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActions;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociations;
import org.apache.isis.core.runtime.system.DeploymentType;
@@ -135,13 +133,13 @@ public class EntityHeaderPanel extends PanelAbstract<EntityModel> implements Act
final ObjectSpecification adapterSpec = adapter.getSpecification();
@SuppressWarnings("unchecked")
final List<ObjectAction> userActions = adapterSpec.getObjectActions(actionType, Contributed.INCLUDED,
- Filters.and(memberOrderNameNotCollection(adapterSpec), dynamicallyVisibleFor(adapter)));
+ Filters.and(memberOrderNameNotAssociation(adapterSpec), dynamicallyVisibleFor(adapter)));
topLevelActions.addAll(userActions);
}
- private Filter<ObjectAction> memberOrderNameNotCollection(final ObjectSpecification adapterSpec) {
+ private Filter<ObjectAction> memberOrderNameNotAssociation(final ObjectSpecification adapterSpec) {
- final List<ObjectAssociation> associations = adapterSpec.getAssociations(Contributed.EXCLUDED);
+ final List<ObjectAssociation> associations = adapterSpec.getAssociations(Contributed.INCLUDED);
final List<String> associationNames = Lists.transform(associations, ObjectAssociations.toName());
final List<String> associationIds = Lists.transform(associations, ObjectAssociations.toId());
@@ -161,7 +159,7 @@ public class EntityHeaderPanel extends PanelAbstract<EntityModel> implements Act
protected Filter<ObjectAction> dynamicallyVisibleFor(final ObjectAdapter adapter) {
- return ObjectActionFilters.dynamicallyVisible(getAuthenticationSession(), adapter, Where.ANYWHERE);
+ return ObjectAction.Filters.dynamicallyVisible(getAuthenticationSession(), adapter, Where.ANYWHERE);
}
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
index 770b09d..181b11f 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
@@ -55,7 +55,6 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecifications;
import org.apache.isis.core.metamodel.spec.ObjectSpecifications.MemberGroupLayoutHint;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociations;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.core.runtime.memento.Memento;
@@ -236,7 +235,7 @@ class EntityPropertiesForm extends FormAbstract<ObjectAdapter> {
@SuppressWarnings("unchecked")
private Filter<ObjectAssociation> visiblePropertyFilter(final ObjectAdapter adapter, Where where) {
- return Filters.and(ObjectAssociationFilters.PROPERTIES, ObjectAssociationFilters.dynamicallyVisible(getAuthenticationSession(), adapter, where));
+ return Filters.and(ObjectAssociation.Filters.PROPERTIES, ObjectAssociation.Filters.dynamicallyVisible(getAuthenticationSession(), adapter, where));
}
private void addButtons(MarkupContainer markupContainer) {
@@ -501,7 +500,7 @@ class EntityPropertiesForm extends FormAbstract<ObjectAdapter> {
@SuppressWarnings("unchecked")
private Filter<ObjectAssociation> enabledAssociationFilter(final ObjectAdapter adapter) {
- return Filters.and(ObjectAssociationFilters.PROPERTIES, ObjectAssociationFilters.enabled(getAuthenticationSession(), adapter, Where.OBJECT_FORMS));
+ return Filters.and(ObjectAssociation.Filters.PROPERTIES, ObjectAssociation.Filters.enabled(getAuthenticationSession(), adapter, Where.OBJECT_FORMS));
}
private void toEditMode(final AjaxRequestTarget target) {
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuBuilder.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuBuilder.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuBuilder.java
index fb41708..7d8f6ba 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuBuilder.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuBuilder.java
@@ -28,9 +28,7 @@ import com.google.common.collect.Collections2;
import org.apache.isis.applib.filter.Filters;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.ActionType;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionFilters;
import org.apache.isis.core.progmodel.facets.actions.bulk.BulkFacet;
import org.apache.isis.core.progmodel.facets.actions.notcontributed.NotContributedFacet;
import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -106,7 +104,7 @@ public class CssMenuBuilder {
}
private void addMenuItemsForActionsOfType(final CssMenuItem parent, final List<ObjectAction> actions, final ActionType type) {
- final Collection<ObjectAction> filterActionsOfType = Collections2.filter(actions, Filters.asPredicate(ObjectActionFilters.filterOfType(type)));
+ final Collection<ObjectAction> filterActionsOfType = Collections2.filter(actions, Filters.asPredicate(ObjectAction.Filters.ofType(type)));
for (final ObjectAction action : filterActionsOfType) {
addMenuItem(parent, action);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetUtil.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetUtil.java
index e618300..2116a68 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetUtil.java
@@ -150,4 +150,12 @@ public final class FacetUtil {
return facetByType;
}
+ public static void copyFacets(final FacetHolder source, final FacetHolder target) {
+ List<Facet> facets = source.getFacets(org.apache.isis.applib.filter.Filters.<Facet>any());
+ for (Facet facet : facets) {
+ target.addFacet(facet);
+ }
+ }
+
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java
index 7048ec6..e7638bb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java
@@ -30,6 +30,8 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facetapi.MethodRemover;
import org.apache.isis.core.metamodel.methodutils.MethodScope;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
public interface FacetFactory {
@@ -44,6 +46,11 @@ public interface FacetFactory {
return facetHolder;
}
}
+
+ public interface ProcessContextWithMetadataProperties<T extends FacetHolder> {
+ public Properties metadataProperties(String prefix);
+ public T getFacetHolder();
+ }
/**
* The {@link FeatureType feature type}s that this facet factory can create
@@ -61,7 +68,7 @@ public interface FacetFactory {
// process class
// //////////////////////////////////////
- public static class ProcessClassContext extends AbstractProcessContext<FacetHolder> implements MethodRemover {
+ public static class ProcessClassContext extends AbstractProcessContext<FacetHolder> implements MethodRemover, ProcessContextWithMetadataProperties<FacetHolder> {
private final Class<?> cls;
private final MethodRemover methodRemover;
private final Properties metadataProperties;
@@ -130,7 +137,7 @@ public interface FacetFactory {
// //////////////////////////////////////
- public static class ProcessMethodContext extends AbstractProcessContext<FacetedMethod> implements MethodRemover {
+ public static class ProcessMethodContext extends AbstractProcessContext<FacetedMethod> implements MethodRemover, ProcessContextWithMetadataProperties<FacetedMethod> {
private final Class<?> cls;
private final FeatureType featureType;
private final Properties metadataProperties;
@@ -212,7 +219,9 @@ public interface FacetFactory {
*/
void process(ProcessMethodContext processMethodContext);
-
+
+
+
// //////////////////////////////////////
// process param
// //////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MemberOrderingFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MemberOrderingFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MemberOrderingFacetFactory.java
new file mode 100644
index 0000000..881fc18
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MemberOrderingFacetFactory.java
@@ -0,0 +1,79 @@
+/*
+ * 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;
+
+import java.util.Properties;
+
+import org.apache.isis.applib.Identifier;
+import org.apache.isis.core.commons.lang.PropertyUtil;
+import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+
+/**
+ * A {@link FacetFactory} which orders {@link ObjectMember}s (eg, according to
+ * the {@link MemberOrderFacet}).
+ */
+public interface MemberOrderingFacetFactory extends FacetFactory {
+
+ public static class ProcessMemberContext extends AbstractProcessContext<ObjectMember> implements ProcessContextWithMetadataProperties<ObjectMember> {
+
+ private final Properties metadataProperties;
+
+ public ProcessMemberContext(
+ final Properties metadataProperties,
+ final ObjectMember facetHolder) {
+ super(facetHolder);
+ this.metadataProperties = metadataProperties;
+ }
+
+ public Properties metadataProperties(String prefix) {
+
+ if(metadataProperties == null) {
+ return null;
+ }
+ Identifier identifier = getFacetHolder().getIdentifier();
+ final String id = identifier.getMemberName();
+
+ // bit of a hack; to distinguish between actions and properties that have same identifier
+ // eg getPaidBy() and paidBy()
+ if(getFacetHolder() instanceof ObjectAction) {
+ Properties subsetProperties = PropertyUtil.subset(this.metadataProperties, prefix+"."+id+"()");
+ if (!subsetProperties.isEmpty()) {
+ return subsetProperties;
+ }
+ }
+
+ // otherwise, regular processing...
+ Properties subsetProperties = PropertyUtil.subset(this.metadataProperties, prefix+"."+id);
+ if (!subsetProperties.isEmpty()) {
+ return subsetProperties;
+ }
+
+ return null;
+ }
+ }
+
+ /**
+ * Sort the member, and return the correctly setup annotation if present.
+ */
+ void process(ProcessMemberContext processMemberContext);
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
index 83ce224..2b563cc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
@@ -34,7 +34,6 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionFilters;
public abstract class AutoCompleteFacetAbstract extends FacetAbstract implements AutoCompleteFacet {
@@ -97,7 +96,7 @@ public abstract class AutoCompleteFacetAbstract extends FacetAbstract implements
private void cacheRepositoryAction() {
try {
final ObjectSpecification repositorySpec = specificationLoader.loadSpecification(repositoryClass);
- final List<ObjectAction> objectActions = repositorySpec.getObjectActions(ActionType.USER, Contributed.EXCLUDED, ObjectActionFilters.withId(actionName));
+ final List<ObjectAction> objectActions = repositorySpec.getObjectActions(ActionType.USER, Contributed.EXCLUDED, ObjectAction.Filters.withId(actionName));
repositoryAction = objectActions.size() == 1? objectActions.get(0): null;
} finally {
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
index 642fa8a..2ba2e79 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
@@ -52,10 +52,8 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecifications;
import org.apache.isis.core.metamodel.spec.ObjectSpecifications.MemberGroupLayoutHint;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionFilters;
import org.apache.isis.core.metamodel.spec.feature.ObjectActions;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociations;
public class LayoutMetadataReaderFromJson implements LayoutMetadataReader {
@@ -310,13 +308,13 @@ public class LayoutMetadataReaderFromJson implements LayoutMetadataReader {
private static List<ObjectAssociation> propertiesOf(final ObjectSpecification objSpec) {
return objSpec.getAssociations(Contributed.EXCLUDED,
Filters.and(ObjectAssociation.Filters.PROPERTIES,
- ObjectAssociation.Filters.WHEN_VISIBLE_IRRESPECTIVE_OF_WHERE));
+ ObjectAssociation.Filters.VISIBLE_AT_LEAST_SOMETIMES));
}
@SuppressWarnings("unchecked")
private static List<ObjectAssociation> collectionsOf(final ObjectSpecification objSpec) {
return objSpec.getAssociations(Contributed.EXCLUDED,
Filters.and(ObjectAssociation.Filters.COLLECTIONS,
- ObjectAssociation.Filters.WHEN_VISIBLE_IRRESPECTIVE_OF_WHERE));
+ ObjectAssociation.Filters.VISIBLE_AT_LEAST_SOMETIMES));
}
private static List<ObjectAction> actionsOf(final ObjectSpecification objSpec, final Set<String> excludedActionIds) {
return objSpec.getObjectActions(ActionType.ALL, Contributed.INCLUDED, staticallyVisibleExcluding(excludedActionIds));
@@ -325,7 +323,7 @@ public class LayoutMetadataReaderFromJson implements LayoutMetadataReader {
@SuppressWarnings("unchecked")
private static Filter<ObjectAction> staticallyVisibleExcluding(final Set<String> excludedActionIds) {
return Filters.and(
- ObjectAction.Filters.WHEN_VISIBLE_IRRESPECTIVE_OF_WHERE,
+ ObjectAction.Filters.VISIBLE_AT_LEAST_SOMETIMES,
new Filter<ObjectAction>(){
@Override
public boolean accept(ObjectAction t) {
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/devutils/DeveloperUtilitiesServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/devutils/DeveloperUtilitiesServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/devutils/DeveloperUtilitiesServiceDefault.java
index 328c3dc..1c13ab6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/devutils/DeveloperUtilitiesServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/devutils/DeveloperUtilitiesServiceDefault.java
@@ -50,7 +50,6 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpiAware;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -83,7 +82,7 @@ public class DeveloperUtilitiesServiceDefault implements DeveloperUtilitiesServi
if (exclude(spec)) {
continue;
}
- final List<ObjectAssociation> properties = spec.getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.PROPERTIES);
+ final List<ObjectAssociation> properties = spec.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.PROPERTIES);
for (ObjectAssociation property : properties) {
final OneToOneAssociation otoa = (OneToOneAssociation) property;
if (exclude(otoa)) {
@@ -91,7 +90,7 @@ public class DeveloperUtilitiesServiceDefault implements DeveloperUtilitiesServi
}
rows.add(new MetaModelRow(spec, otoa));
}
- final List<ObjectAssociation> associations = spec.getAssociations(Contributed.EXCLUDED, ObjectAssociationFilters.COLLECTIONS);
+ final List<ObjectAssociation> associations = spec.getAssociations(Contributed.EXCLUDED, ObjectAssociation.Filters.COLLECTIONS);
for (ObjectAssociation collection : associations) {
final OneToManyAssociation otma = (OneToManyAssociation) collection;
if (exclude(otma)) {
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationContext.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationContext.java
index 7e7cecb..a55b94f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/SpecificationContext.java
@@ -19,6 +19,7 @@ package org.apache.isis.core.metamodel.spec;
import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
import org.apache.isis.core.metamodel.adapter.ServicesProvider;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
public class SpecificationContext {
@@ -27,13 +28,21 @@ public class SpecificationContext {
private final ServicesProvider servicesProvider;
private final ObjectInstantiator objectInstantiator;
private final SpecificationLoader specificationLookup;
+ private final FacetProcessor facetProcessor;
- public SpecificationContext(final DeploymentCategory deploymentCategory, final AuthenticationSessionProvider authenticationSessionProvider, final ServicesProvider servicesProvider, final ObjectInstantiator objectInstantiator, final SpecificationLoader specificationLookup) {
+ public SpecificationContext(
+ final DeploymentCategory deploymentCategory,
+ final AuthenticationSessionProvider authenticationSessionProvider,
+ final ServicesProvider servicesProvider,
+ final ObjectInstantiator objectInstantiator,
+ final SpecificationLoader specificationLookup,
+ final FacetProcessor facetProcessor) {
this.deploymentCategory = deploymentCategory;
this.authenticationSessionProvider = authenticationSessionProvider;
this.servicesProvider = servicesProvider;
this.objectInstantiator = objectInstantiator;
this.specificationLookup = specificationLookup;
+ this.facetProcessor = facetProcessor;
}
public DeploymentCategory getDeploymentCategory() {
@@ -55,4 +64,8 @@ public class SpecificationContext {
public SpecificationLoader getSpecificationLookup() {
return specificationLookup;
}
+
+ public FacetProcessor getFacetProcessor() {
+ return facetProcessor;
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/c009dec5/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
index f3e2a6b..c3227a3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.spec.feature;
import java.util.List;
import org.apache.isis.applib.annotation.ActionSemantics;
+import org.apache.isis.applib.annotation.When;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.filter.Filter;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
@@ -30,6 +31,8 @@ import org.apache.isis.core.metamodel.consent.Consent;
import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetFilters;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.hide.HiddenFacet;
import org.apache.isis.core.metamodel.interactions.AccessContext;
import org.apache.isis.core.metamodel.interactions.ActionInvocationContext;
import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
@@ -179,10 +182,11 @@ public interface ObjectAction extends ObjectMember {
private Filters(){}
- public static final Filter<ObjectAction> WHEN_VISIBLE_IRRESPECTIVE_OF_WHERE = new Filter<ObjectAction>() {
+ public static final Filter<ObjectAction> VISIBLE_AT_LEAST_SOMETIMES = new Filter<ObjectAction>() {
@Override
public boolean accept(final ObjectAction action) {
- return !action.isAlwaysHidden();
+ final HiddenFacet hiddenFacet = action.getFacet(HiddenFacet.class);
+ return hiddenFacet == null || hiddenFacet.when() != When.ALWAYS || hiddenFacet.where() != Where.ANYWHERE;
}
};