You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/10/14 02:28:55 UTC
[10/12] isis git commit: ISIS-1213: renamed metamodel classes
("...Impl" to "...Default");
derive name of ObjectActionMixedIn from mixin type (if "_");
simplified logic of #getParameters; also...
http://git-wip-us.apache.org/repos/asf/isis/blob/6c888136/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
new file mode 100644
index 0000000..69019aa
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
@@ -0,0 +1,298 @@
+/*
+ * 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.specloader.specimpl;
+
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.core.commons.debug.DebugString;
+import org.apache.isis.core.commons.exceptions.IsisException;
+import org.apache.isis.core.commons.util.ToString;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.consent.InteractionResult;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.FacetedMethod;
+import org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacet;
+import org.apache.isis.core.metamodel.facets.collections.modify.CollectionClearFacet;
+import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
+import org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemoveFromFacet;
+import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
+import org.apache.isis.core.metamodel.interactions.CollectionAddToContext;
+import org.apache.isis.core.metamodel.interactions.CollectionRemoveFromContext;
+import org.apache.isis.core.metamodel.interactions.CollectionUsabilityContext;
+import org.apache.isis.core.metamodel.interactions.CollectionVisibilityContext;
+import org.apache.isis.core.metamodel.interactions.InteractionUtils;
+import org.apache.isis.core.metamodel.interactions.UsabilityContext;
+import org.apache.isis.core.metamodel.interactions.ValidityContext;
+import org.apache.isis.core.metamodel.interactions.VisibilityContext;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+
+public class OneToManyAssociationDefault extends ObjectAssociationAbstract implements OneToManyAssociation {
+
+ public OneToManyAssociationDefault(
+ final FacetedMethod facetedMethod,
+ final ObjectMemberDependencies objectMemberDependencies) {
+ this(facetedMethod, getSpecification(objectMemberDependencies.getSpecificationLoader(), facetedMethod.getType()),
+ objectMemberDependencies);
+ }
+
+ protected OneToManyAssociationDefault(
+ final FacetedMethod facetedMethod,
+ final ObjectSpecification objectSpec,
+ final ObjectMemberDependencies objectMemberDependencies) {
+ super(facetedMethod, FeatureType.COLLECTION, objectSpec, objectMemberDependencies);
+ }
+
+ @Override
+ public CollectionSemantics getCollectionSemantics() {
+ final Class<?> underlyingClass = getSpecification().getCorrespondingClass();
+ return getCollectionTypeRegistry().semanticsOf(underlyingClass);
+ }
+
+ //region > visible, usable
+
+ @Override
+ public VisibilityContext<?> createVisibleInteractionContext(
+ final ObjectAdapter ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
+ Where where) {
+ return new CollectionVisibilityContext(ownerAdapter, getIdentifier(), interactionInitiatedBy, where);
+ }
+
+
+ @Override
+ public UsabilityContext<?> createUsableInteractionContext(
+ final ObjectAdapter ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
+ Where where) {
+ return new CollectionUsabilityContext(ownerAdapter, getIdentifier(), interactionInitiatedBy, where);
+ }
+
+ //endregion
+
+ //region > Validate Add
+ // Not API
+ private ValidityContext<?> createValidateAddInteractionContext(
+ final InteractionInitiatedBy interactionInitiatedBy,
+ final ObjectAdapter ownerAdapter,
+ final ObjectAdapter proposedToAddAdapter) {
+ return new CollectionAddToContext(ownerAdapter, getIdentifier(), proposedToAddAdapter,
+ interactionInitiatedBy);
+ }
+
+ @Override
+ public Consent isValidToAdd(
+ final ObjectAdapter ownerAdapter,
+ final ObjectAdapter proposedToAddAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ return isValidToAddResult(ownerAdapter, proposedToAddAdapter, interactionInitiatedBy).createConsent();
+ }
+
+ private InteractionResult isValidToAddResult(
+ final ObjectAdapter ownerAdapter,
+ final ObjectAdapter proposedToAddAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ final ValidityContext<?> validityContext = createValidateAddInteractionContext(
+ interactionInitiatedBy, ownerAdapter, proposedToAddAdapter);
+ return InteractionUtils.isValidResult(this, validityContext);
+ }
+
+ //endregion
+
+ //region > Validate Remove
+ private ValidityContext<?> createValidateRemoveInteractionContext(
+ final ObjectAdapter ownerAdapter,
+ final ObjectAdapter proposedToRemoveAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ return new CollectionRemoveFromContext(
+ ownerAdapter, getIdentifier(), proposedToRemoveAdapter, interactionInitiatedBy
+ );
+ }
+
+ @Override
+ public Consent isValidToRemove(
+ final ObjectAdapter ownerAdapter,
+ final ObjectAdapter proposedToRemoveAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ return isValidToRemoveResult(
+ ownerAdapter, proposedToRemoveAdapter, interactionInitiatedBy).createConsent();
+ }
+
+ private InteractionResult isValidToRemoveResult(
+ final ObjectAdapter ownerAdapter,
+ final ObjectAdapter proposedToRemoveAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ final ValidityContext<?> validityContext = createValidateRemoveInteractionContext(
+ ownerAdapter, proposedToRemoveAdapter, interactionInitiatedBy);
+ return InteractionUtils.isValidResult(this, validityContext);
+ }
+
+ private boolean readWrite() {
+ return !isNotPersisted();
+ }
+
+ //endregion
+
+ //region > get, isEmpty, add, clear
+
+ @Override
+ public ObjectAdapter get(
+ final ObjectAdapter ownerAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+
+ final PropertyOrCollectionAccessorFacet accessor = getFacet(PropertyOrCollectionAccessorFacet.class);
+ final Object collection = accessor.getProperty(ownerAdapter,
+ interactionInitiatedBy);
+ if (collection == null) {
+ return null;
+ }
+ return getPersistenceSessionService().adapterFor(collection, ownerAdapter, this);
+ }
+
+ @Override
+ public boolean isEmpty(final ObjectAdapter parentAdapter, final InteractionInitiatedBy interactionInitiatedBy) {
+ // REVIEW should we be able to determine if a collection is empty
+ // without loading it?
+ final ObjectAdapter collection = get(parentAdapter, interactionInitiatedBy);
+ final CollectionFacet facet = CollectionFacet.Utils.getCollectionFacetFromSpec(collection);
+ return facet.size(collection) == 0;
+ }
+
+ //endregion
+
+ //region > add, clear
+
+ @Override
+ public void addElement(
+ final ObjectAdapter ownerAdapter,
+ final ObjectAdapter referencedAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ if (referencedAdapter == null) {
+ throw new IllegalArgumentException("Can't use null to add an item to a collection");
+ }
+ if (readWrite()) {
+ if (ownerAdapter.representsPersistent() && referencedAdapter.isTransient()) {
+ throw new IsisException("can't set a reference to a transient object from a persistent one: " + ownerAdapter.titleString(null) + " (persistent) -> " + referencedAdapter.titleString() + " (transient)");
+ }
+ final CollectionAddToFacet facet = getFacet(CollectionAddToFacet.class);
+ facet.add(ownerAdapter, referencedAdapter, interactionInitiatedBy);
+ }
+ }
+
+ @Override
+ public void removeElement(
+ final ObjectAdapter ownerAdapter,
+ final ObjectAdapter referencedAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ if (referencedAdapter == null) {
+ throw new IllegalArgumentException("element should not be null");
+ }
+ if (readWrite()) {
+ final CollectionRemoveFromFacet facet = getFacet(CollectionRemoveFromFacet.class);
+ facet.remove(ownerAdapter, referencedAdapter, interactionInitiatedBy);
+ }
+ }
+
+ public void removeAllAssociations(final ObjectAdapter ownerAdapter) {
+ final CollectionClearFacet facet = getFacet(CollectionClearFacet.class);
+ facet.clear(ownerAdapter);
+ }
+
+ @Override
+ public void clearCollection(final ObjectAdapter ownerAdapter) {
+ if (readWrite()) {
+ final CollectionClearFacet facet = getFacet(CollectionClearFacet.class);
+ facet.clear(ownerAdapter);
+ }
+ }
+
+ //endregion
+
+ //region > defaults
+ @Override
+ public ObjectAdapter getDefault(final ObjectAdapter ownerAdapter) {
+ return null;
+ }
+
+ @Override
+ public void toDefault(final ObjectAdapter ownerAdapter) {
+ }
+
+ //endregion
+
+ //region > choices & autoComplete
+
+ @Override
+ public ObjectAdapter[] getChoices(
+ final ObjectAdapter ownerAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ return new ObjectAdapter[0];
+ }
+
+ @Override
+ public boolean hasChoices() {
+ return false;
+ }
+
+
+ @Override
+ public boolean hasAutoComplete() {
+ return false;
+ }
+
+ @Override
+ public ObjectAdapter[] getAutoComplete(
+ ObjectAdapter object,
+ String searchArg,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ return new ObjectAdapter[0];
+ }
+
+ @Override
+ public int getAutoCompleteMinLength() {
+ return 0; // n/a
+ }
+
+ //endregion
+
+ //region > debug, toString
+ @Override
+ public String debugData() {
+ final DebugString debugString = new DebugString();
+ debugString.indent();
+ debugString.indent();
+ getFacetedMethod().debugData(debugString);
+ return debugString.toString();
+ }
+
+ @Override
+ public String toString() {
+ final ToString str = new ToString(this);
+ str.append(super.toString());
+ str.append(",");
+ str.append("persisted", !isNotPersisted());
+ str.append("type", getSpecification() == null ? "unknown" : getSpecification().getShortIdentifier());
+ return str.toString();
+ }
+
+ //endregion
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/6c888136/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationImpl.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationImpl.java
deleted file mode 100644
index fda40d2..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationImpl.java
+++ /dev/null
@@ -1,298 +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.specloader.specimpl;
-
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.commons.debug.DebugString;
-import org.apache.isis.core.commons.exceptions.IsisException;
-import org.apache.isis.core.commons.util.ToString;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.consent.InteractionResult;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.FacetedMethod;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacet;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionClearFacet;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemoveFromFacet;
-import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.interactions.CollectionAddToContext;
-import org.apache.isis.core.metamodel.interactions.CollectionRemoveFromContext;
-import org.apache.isis.core.metamodel.interactions.CollectionUsabilityContext;
-import org.apache.isis.core.metamodel.interactions.CollectionVisibilityContext;
-import org.apache.isis.core.metamodel.interactions.InteractionUtils;
-import org.apache.isis.core.metamodel.interactions.UsabilityContext;
-import org.apache.isis.core.metamodel.interactions.ValidityContext;
-import org.apache.isis.core.metamodel.interactions.VisibilityContext;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-
-public class OneToManyAssociationImpl extends ObjectAssociationAbstract implements OneToManyAssociation {
-
- public OneToManyAssociationImpl(
- final FacetedMethod facetedMethod,
- final ObjectMemberDependencies objectMemberDependencies) {
- this(facetedMethod, getSpecification(objectMemberDependencies.getSpecificationLoader(), facetedMethod.getType()),
- objectMemberDependencies);
- }
-
- protected OneToManyAssociationImpl(
- final FacetedMethod facetedMethod,
- final ObjectSpecification objectSpec,
- final ObjectMemberDependencies objectMemberDependencies) {
- super(facetedMethod, FeatureType.COLLECTION, objectSpec, objectMemberDependencies);
- }
-
- @Override
- public CollectionSemantics getCollectionSemantics() {
- final Class<?> underlyingClass = getSpecification().getCorrespondingClass();
- return getCollectionTypeRegistry().semanticsOf(underlyingClass);
- }
-
- //region > visible, usable
-
- @Override
- public VisibilityContext<?> createVisibleInteractionContext(
- final ObjectAdapter ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
- Where where) {
- return new CollectionVisibilityContext(ownerAdapter, getIdentifier(), interactionInitiatedBy, where);
- }
-
-
- @Override
- public UsabilityContext<?> createUsableInteractionContext(
- final ObjectAdapter ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
- Where where) {
- return new CollectionUsabilityContext(ownerAdapter, getIdentifier(), interactionInitiatedBy, where);
- }
-
- //endregion
-
- //region > Validate Add
- // Not API
- private ValidityContext<?> createValidateAddInteractionContext(
- final InteractionInitiatedBy interactionInitiatedBy,
- final ObjectAdapter ownerAdapter,
- final ObjectAdapter proposedToAddAdapter) {
- return new CollectionAddToContext(ownerAdapter, getIdentifier(), proposedToAddAdapter,
- interactionInitiatedBy);
- }
-
- @Override
- public Consent isValidToAdd(
- final ObjectAdapter ownerAdapter,
- final ObjectAdapter proposedToAddAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- return isValidToAddResult(ownerAdapter, proposedToAddAdapter, interactionInitiatedBy).createConsent();
- }
-
- private InteractionResult isValidToAddResult(
- final ObjectAdapter ownerAdapter,
- final ObjectAdapter proposedToAddAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- final ValidityContext<?> validityContext = createValidateAddInteractionContext(
- interactionInitiatedBy, ownerAdapter, proposedToAddAdapter);
- return InteractionUtils.isValidResult(this, validityContext);
- }
-
- //endregion
-
- //region > Validate Remove
- private ValidityContext<?> createValidateRemoveInteractionContext(
- final ObjectAdapter ownerAdapter,
- final ObjectAdapter proposedToRemoveAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- return new CollectionRemoveFromContext(
- ownerAdapter, getIdentifier(), proposedToRemoveAdapter, interactionInitiatedBy
- );
- }
-
- @Override
- public Consent isValidToRemove(
- final ObjectAdapter ownerAdapter,
- final ObjectAdapter proposedToRemoveAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- return isValidToRemoveResult(
- ownerAdapter, proposedToRemoveAdapter, interactionInitiatedBy).createConsent();
- }
-
- private InteractionResult isValidToRemoveResult(
- final ObjectAdapter ownerAdapter,
- final ObjectAdapter proposedToRemoveAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- final ValidityContext<?> validityContext = createValidateRemoveInteractionContext(
- ownerAdapter, proposedToRemoveAdapter, interactionInitiatedBy);
- return InteractionUtils.isValidResult(this, validityContext);
- }
-
- private boolean readWrite() {
- return !isNotPersisted();
- }
-
- //endregion
-
- //region > get, isEmpty, add, clear
-
- @Override
- public ObjectAdapter get(
- final ObjectAdapter ownerAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
-
- final PropertyOrCollectionAccessorFacet accessor = getFacet(PropertyOrCollectionAccessorFacet.class);
- final Object collection = accessor.getProperty(ownerAdapter,
- interactionInitiatedBy);
- if (collection == null) {
- return null;
- }
- return getPersistenceSessionService().adapterFor(collection, ownerAdapter, this);
- }
-
- @Override
- public boolean isEmpty(final ObjectAdapter parentAdapter, final InteractionInitiatedBy interactionInitiatedBy) {
- // REVIEW should we be able to determine if a collection is empty
- // without loading it?
- final ObjectAdapter collection = get(parentAdapter, interactionInitiatedBy);
- final CollectionFacet facet = CollectionFacet.Utils.getCollectionFacetFromSpec(collection);
- return facet.size(collection) == 0;
- }
-
- //endregion
-
- //region > add, clear
-
- @Override
- public void addElement(
- final ObjectAdapter ownerAdapter,
- final ObjectAdapter referencedAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- if (referencedAdapter == null) {
- throw new IllegalArgumentException("Can't use null to add an item to a collection");
- }
- if (readWrite()) {
- if (ownerAdapter.representsPersistent() && referencedAdapter.isTransient()) {
- throw new IsisException("can't set a reference to a transient object from a persistent one: " + ownerAdapter.titleString(null) + " (persistent) -> " + referencedAdapter.titleString() + " (transient)");
- }
- final CollectionAddToFacet facet = getFacet(CollectionAddToFacet.class);
- facet.add(ownerAdapter, referencedAdapter, interactionInitiatedBy);
- }
- }
-
- @Override
- public void removeElement(
- final ObjectAdapter ownerAdapter,
- final ObjectAdapter referencedAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- if (referencedAdapter == null) {
- throw new IllegalArgumentException("element should not be null");
- }
- if (readWrite()) {
- final CollectionRemoveFromFacet facet = getFacet(CollectionRemoveFromFacet.class);
- facet.remove(ownerAdapter, referencedAdapter, interactionInitiatedBy);
- }
- }
-
- public void removeAllAssociations(final ObjectAdapter ownerAdapter) {
- final CollectionClearFacet facet = getFacet(CollectionClearFacet.class);
- facet.clear(ownerAdapter);
- }
-
- @Override
- public void clearCollection(final ObjectAdapter ownerAdapter) {
- if (readWrite()) {
- final CollectionClearFacet facet = getFacet(CollectionClearFacet.class);
- facet.clear(ownerAdapter);
- }
- }
-
- //endregion
-
- //region > defaults
- @Override
- public ObjectAdapter getDefault(final ObjectAdapter ownerAdapter) {
- return null;
- }
-
- @Override
- public void toDefault(final ObjectAdapter ownerAdapter) {
- }
-
- //endregion
-
- //region > choices & autoComplete
-
- @Override
- public ObjectAdapter[] getChoices(
- final ObjectAdapter ownerAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- return new ObjectAdapter[0];
- }
-
- @Override
- public boolean hasChoices() {
- return false;
- }
-
-
- @Override
- public boolean hasAutoComplete() {
- return false;
- }
-
- @Override
- public ObjectAdapter[] getAutoComplete(
- ObjectAdapter object,
- String searchArg,
- final InteractionInitiatedBy interactionInitiatedBy) {
- return new ObjectAdapter[0];
- }
-
- @Override
- public int getAutoCompleteMinLength() {
- return 0; // n/a
- }
-
- //endregion
-
- //region > debug, toString
- @Override
- public String debugData() {
- final DebugString debugString = new DebugString();
- debugString.indent();
- debugString.indent();
- getFacetedMethod().debugData(debugString);
- return debugString.toString();
- }
-
- @Override
- public String toString() {
- final ToString str = new ToString(this);
- str.append(super.toString());
- str.append(",");
- str.append("persisted", !isNotPersisted());
- str.append("type", getSpecification() == null ? "unknown" : getSpecification().getShortIdentifier());
- return str.toString();
- }
-
- //endregion
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/6c888136/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterContributee.java
index f387d1f..00f4c89 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterContributee.java
@@ -23,7 +23,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
-public class OneToOneActionParameterContributee extends OneToOneActionParameterImpl implements ObjectActionParameterContributee{
+public class OneToOneActionParameterContributee extends OneToOneActionParameterDefault implements ObjectActionParameterContributee{
private final ObjectAdapter serviceAdapter;
private final ObjectActionParameter serviceActionParameter;
http://git-wip-us.apache.org/repos/asf/isis/blob/6c888136/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterDefault.java
new file mode 100644
index 0000000..65cf664
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterDefault.java
@@ -0,0 +1,35 @@
+/*
+ * 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.specloader.specimpl;
+
+import org.apache.isis.core.metamodel.facets.TypedHolder;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneActionParameter;
+
+public class OneToOneActionParameterDefault extends ObjectActionParameterAbstract implements OneToOneActionParameter {
+
+ public OneToOneActionParameterDefault(
+ final int index,
+ final ObjectActionDefault actionImpl,
+ final TypedHolder peer) {
+ super(index, actionImpl, peer);
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/6c888136/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterImpl.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterImpl.java
deleted file mode 100644
index 7260d5a..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterImpl.java
+++ /dev/null
@@ -1,35 +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.specloader.specimpl;
-
-import org.apache.isis.core.metamodel.facets.TypedHolder;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneActionParameter;
-
-public class OneToOneActionParameterImpl extends ObjectActionParameterAbstract implements OneToOneActionParameter {
-
- public OneToOneActionParameterImpl(
- final int index,
- final ObjectActionImpl actionImpl,
- final TypedHolder peer) {
- super(index, actionImpl, peer);
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/6c888136/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterMixedIn.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterMixedIn.java
index d832cf8..1d4a7ce 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterMixedIn.java
@@ -22,7 +22,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
-public class OneToOneActionParameterMixedIn extends OneToOneActionParameterImpl implements ObjectActionParameterMixedIn {
+public class OneToOneActionParameterMixedIn extends OneToOneActionParameterDefault implements ObjectActionParameterMixedIn {
private final ObjectActionParameter mixinParameter;
private final ObjectActionMixedIn mixedInAction;
@@ -56,4 +56,5 @@ public class OneToOneActionParameterMixedIn extends OneToOneActionParameterImpl
}
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/6c888136/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 42997b9..61b0984 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
@@ -21,15 +21,12 @@ import java.util.List;
import org.apache.isis.applib.Identifier;
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.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.consent.Consent;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-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.FacetedMethod;
import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetForContributee;
@@ -42,7 +39,7 @@ 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.ObjectMemberDependencies;
-public class OneToOneAssociationContributee extends OneToOneAssociationImpl implements ContributeeMember2 {
+public class OneToOneAssociationContributee extends OneToOneAssociationDefault implements ContributeeMember2 {
private final Object servicePojo;
private final ObjectAction serviceAction;
@@ -57,7 +54,7 @@ public class OneToOneAssociationContributee extends OneToOneAssociationImpl impl
public OneToOneAssociationContributee(
final Object servicePojo,
- final ObjectActionImpl serviceAction,
+ final ObjectActionDefault serviceAction,
final ObjectSpecification contributeeType,
final ObjectMemberDependencies objectMemberDependencies) {
super(serviceAction.getFacetedMethod(), serviceAction.getReturnType(), objectMemberDependencies);
@@ -145,62 +142,21 @@ public class OneToOneAssociationContributee extends OneToOneAssociationImpl impl
return InteractionUtils.isUsableResult(this, ic).createConsent();
}
- //region > FacetHolder
@Override
- public Class<? extends Facet>[] getFacetTypes() {
- return facetHolder.getFacetTypes();
+ protected FacetHolder getFacetHolder() {
+ return facetHolder;
}
- @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);
- }
-
- //endregion
-
private ObjectAdapter getServiceAdapter() {
return getPersistenceSessionService().adapterFor(servicePojo);
}
+ //region > Contributee2 impl - getServiceContributedBy()
@Override
public ObjectSpecification getServiceContributedBy() {
return getServiceAdapter().getSpecification();
}
+ //endregion
}
http://git-wip-us.apache.org/repos/asf/isis/blob/6c888136/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
new file mode 100644
index 0000000..8089ca4
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
@@ -0,0 +1,345 @@
+/*
+ * 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.specloader.specimpl;
+
+import java.util.List;
+
+import com.google.common.collect.Lists;
+
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.core.commons.debug.DebugString;
+import org.apache.isis.core.commons.exceptions.IsisException;
+import org.apache.isis.core.commons.util.ToString;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.consent.InteractionResult;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.FacetedMethod;
+import org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet;
+import org.apache.isis.core.metamodel.facets.param.autocomplete.MinLengthUtil;
+import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
+import org.apache.isis.core.metamodel.facets.properties.autocomplete.PropertyAutoCompleteFacet;
+import org.apache.isis.core.metamodel.facets.properties.choices.PropertyChoicesFacet;
+import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacet;
+import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet;
+import org.apache.isis.core.metamodel.facets.properties.update.init.PropertyInitializationFacet;
+import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
+import org.apache.isis.core.metamodel.interactions.InteractionUtils;
+import org.apache.isis.core.metamodel.interactions.PropertyAccessContext;
+import org.apache.isis.core.metamodel.interactions.PropertyModifyContext;
+import org.apache.isis.core.metamodel.interactions.PropertyUsabilityContext;
+import org.apache.isis.core.metamodel.interactions.PropertyVisibilityContext;
+import org.apache.isis.core.metamodel.interactions.UsabilityContext;
+import org.apache.isis.core.metamodel.interactions.ValidityContext;
+import org.apache.isis.core.metamodel.interactions.VisibilityContext;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.MutableCurrentHolder;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+
+public class OneToOneAssociationDefault extends ObjectAssociationAbstract implements OneToOneAssociation {
+
+ public OneToOneAssociationDefault(
+ final FacetedMethod facetedMethod,
+ final ObjectMemberDependencies objectMemberDependencies) {
+ this(facetedMethod, getSpecification(objectMemberDependencies.getSpecificationLoader(), facetedMethod.getType()),
+ objectMemberDependencies);
+ }
+
+ protected OneToOneAssociationDefault(
+ final FacetedMethod facetedMethod,
+ final ObjectSpecification objectSpec,
+ final ObjectMemberDependencies objectMemberDependencies) {
+ super(facetedMethod, FeatureType.PROPERTY, objectSpec, objectMemberDependencies);
+ }
+
+ //region > visible, usable
+
+ @Override
+ public VisibilityContext<?> createVisibleInteractionContext(
+ final ObjectAdapter ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
+ Where where) {
+ return new PropertyVisibilityContext(ownerAdapter, getIdentifier(), interactionInitiatedBy, where);
+ }
+
+
+ @Override
+ public UsabilityContext<?> createUsableInteractionContext(
+ final ObjectAdapter ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
+ Where where) {
+ return new PropertyUsabilityContext(ownerAdapter, getIdentifier(), interactionInitiatedBy, where);
+ }
+
+ //endregion
+
+ //region > Validity
+ private ValidityContext<?> createValidateInteractionContext(
+ final ObjectAdapter ownerAdapter,
+ final ObjectAdapter proposedToReferenceAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ return new PropertyModifyContext(ownerAdapter, getIdentifier(), proposedToReferenceAdapter,
+ interactionInitiatedBy);
+ }
+
+ @Override
+ public Consent isAssociationValid(
+ final ObjectAdapter ownerAdapter,
+ final ObjectAdapter proposedAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ return isAssociationValidResult(ownerAdapter, proposedAdapter, interactionInitiatedBy).createConsent();
+ }
+
+ private InteractionResult isAssociationValidResult(
+ final ObjectAdapter ownerAdapter,
+ final ObjectAdapter proposedToReferenceAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ final ValidityContext<?> validityContext =
+ createValidateInteractionContext(
+ ownerAdapter, proposedToReferenceAdapter, interactionInitiatedBy
+ );
+ return InteractionUtils.isValidResult(this, validityContext);
+ }
+
+ //endregion
+
+ //region > init
+ @Override
+ public void initAssociation(final ObjectAdapter ownerAdapter, final ObjectAdapter referencedAdapter) {
+ final PropertyInitializationFacet initializerFacet = getFacet(PropertyInitializationFacet.class);
+ if (initializerFacet != null) {
+ initializerFacet.initProperty(ownerAdapter, referencedAdapter);
+ }
+ }
+
+ //endregion
+
+ //region > Access (get, isEmpty)
+
+ @Override
+ public ObjectAdapter get(
+ final ObjectAdapter ownerAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ final PropertyOrCollectionAccessorFacet facet = getFacet(PropertyOrCollectionAccessorFacet.class);
+ final Object referencedPojo =
+ facet.getProperty(ownerAdapter, interactionInitiatedBy);
+
+ if (referencedPojo == null) {
+ return null;
+ }
+
+ return getPersistenceSessionService().adapterFor(referencedPojo);
+ }
+
+ // UNUSED
+ private PropertyAccessContext createAccessInteractionContext(
+ final ObjectAdapter ownerAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ final ObjectAdapter referencedAdapter = get(ownerAdapter, interactionInitiatedBy);
+ return new PropertyAccessContext(
+ ownerAdapter, getIdentifier(), referencedAdapter, interactionInitiatedBy
+ );
+ }
+
+ @Override
+ public boolean isEmpty(final ObjectAdapter ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy) {
+ return get(ownerAdapter, interactionInitiatedBy) == null;
+ }
+
+ //endregion
+
+ //region > Set
+ @Override
+ public void set(
+ final ObjectAdapter ownerAdapter,
+ final ObjectAdapter newReferencedAdapter) {
+ set(ownerAdapter, newReferencedAdapter, InteractionInitiatedBy.USER);
+ }
+
+ @Override
+ public void set(
+ final ObjectAdapter ownerAdapter,
+ final ObjectAdapter newReferencedAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ if (newReferencedAdapter != null) {
+ setValue(ownerAdapter, newReferencedAdapter, interactionInitiatedBy);
+ } else {
+ clearValue(ownerAdapter, interactionInitiatedBy);
+ }
+ }
+
+ /**
+ * @see MutableCurrentHolder#set(ObjectAdapter, ObjectAdapter, InteractionInitiatedBy)
+ */
+ @Deprecated
+ @Override
+ public void setAssociation(
+ final ObjectAdapter ownerAdapter,
+ final ObjectAdapter newReferencedAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ setValue(ownerAdapter, newReferencedAdapter, interactionInitiatedBy);
+ }
+
+ private void setValue(
+ final ObjectAdapter ownerAdapter,
+ final ObjectAdapter newReferencedAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ final PropertySetterFacet setterFacet = getFacet(PropertySetterFacet.class);
+ if (setterFacet == null) {
+ return;
+ }
+ if (ownerAdapter.representsPersistent() && newReferencedAdapter != null && newReferencedAdapter.isTransient() && !newReferencedAdapter.getSpecification().isParented()) {
+ // TODO: move to facet ?
+ throw new IsisException("can't set a reference to a transient object from a persistent one: " + newReferencedAdapter.titleString(null) + " (transient)");
+ }
+ setterFacet.setProperty(ownerAdapter, newReferencedAdapter, interactionInitiatedBy);
+ }
+
+ /**
+ * @see MutableCurrentHolder#set(ObjectAdapter, ObjectAdapter, InteractionInitiatedBy)
+ */
+ @Deprecated
+ @Override
+ public void clearAssociation(
+ final ObjectAdapter ownerAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ clearValue(ownerAdapter, interactionInitiatedBy);
+ }
+
+ private void clearValue(
+ final ObjectAdapter ownerAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ final PropertyClearFacet facet = getFacet(PropertyClearFacet.class);
+ facet.clearProperty(ownerAdapter, interactionInitiatedBy);
+ }
+
+ //endregion
+
+ //region > defaults
+ @Override
+ public ObjectAdapter getDefault(final ObjectAdapter ownerAdapter) {
+ PropertyDefaultFacet propertyDefaultFacet = getFacet(PropertyDefaultFacet.class);
+ // if no default on the association, attempt to find a default on the
+ // specification (eg an int should
+ // default to 0).
+ if (propertyDefaultFacet == null || propertyDefaultFacet.isNoop()) {
+ propertyDefaultFacet = this.getSpecification().getFacet(PropertyDefaultFacet.class);
+ }
+ if (propertyDefaultFacet == null) {
+ return null;
+ }
+ return propertyDefaultFacet.getDefault(ownerAdapter);
+ }
+
+ @Override
+ public void toDefault(final ObjectAdapter ownerAdapter) {
+ // don't default optional fields
+ final MandatoryFacet mandatoryFacet = getFacet(MandatoryFacet.class);
+ if (mandatoryFacet != null && mandatoryFacet.isInvertedSemantics()) {
+ return;
+ }
+
+ final ObjectAdapter defaultValue = getDefault(ownerAdapter);
+ if (defaultValue != null) {
+ initAssociation(ownerAdapter, defaultValue);
+ }
+ }
+
+ //endregion
+
+ //region > choices and autoComplete
+ @Override
+ public boolean hasChoices() {
+ return getFacet(PropertyChoicesFacet.class) != null;
+ }
+
+ @Override
+ public ObjectAdapter[] getChoices(
+ final ObjectAdapter ownerAdapter,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ final PropertyChoicesFacet propertyChoicesFacet = getFacet(PropertyChoicesFacet.class);
+ if (propertyChoicesFacet == null) {
+ return null;
+ }
+ final Object[] pojoOptions = propertyChoicesFacet.getChoices(
+ ownerAdapter,
+ getSpecificationLoader(),
+ interactionInitiatedBy);
+ List<ObjectAdapter> adapters = Lists.transform(
+ Lists.newArrayList(pojoOptions), ObjectAdapter.Functions.adapterForUsing(getPersistenceSessionService()));
+ return adapters.toArray(new ObjectAdapter[]{});
+ }
+
+
+ @Override
+ public boolean hasAutoComplete() {
+ final PropertyAutoCompleteFacet propertyAutoCompleteFacet = getFacet(PropertyAutoCompleteFacet.class);
+ return propertyAutoCompleteFacet != null;
+ }
+
+ @Override
+ public ObjectAdapter[] getAutoComplete(
+ final ObjectAdapter ownerAdapter,
+ final String searchArg,
+ final InteractionInitiatedBy interactionInitiatedBy) {
+ final PropertyAutoCompleteFacet propertyAutoCompleteFacet = getFacet(PropertyAutoCompleteFacet.class);
+ final Object[] pojoOptions = propertyAutoCompleteFacet.autoComplete(ownerAdapter, searchArg,
+ interactionInitiatedBy);
+ if (pojoOptions != null) {
+ final ObjectAdapter[] options = new ObjectAdapter[pojoOptions.length];
+ for (int i = 0; i < options.length; i++) {
+ options[i] = getPersistenceSessionService().adapterFor(pojoOptions[i]);
+ }
+ return options;
+ }
+ return null;
+ }
+
+ @Override
+ public int getAutoCompleteMinLength() {
+ final PropertyAutoCompleteFacet propertyAutoCompleteFacet = getFacet(PropertyAutoCompleteFacet.class);
+ return propertyAutoCompleteFacet != null? propertyAutoCompleteFacet.getMinLength(): MinLengthUtil.MIN_LENGTH_DEFAULT;
+ }
+
+ //endregion
+
+ //region > debug, toString
+ @Override
+ public String debugData() {
+ final DebugString debugString = new DebugString();
+ debugString.indent();
+ debugString.indent();
+ getFacetedMethod().debugData(debugString);
+ return debugString.toString();
+ }
+
+ @Override
+ public String toString() {
+ final ToString str = new ToString(this);
+ str.append(super.toString());
+ str.setAddComma();
+ str.append("persisted", !isNotPersisted());
+ str.append("type", getSpecification().getShortIdentifier());
+ return str.toString();
+ }
+ //endregion
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/6c888136/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java
deleted file mode 100644
index 07874fa..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java
+++ /dev/null
@@ -1,356 +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.specloader.specimpl;
-
-import java.util.List;
-
-import com.google.common.collect.Lists;
-
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.commons.debug.DebugString;
-import org.apache.isis.core.commons.exceptions.IsisException;
-import org.apache.isis.core.commons.util.ToString;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.consent.InteractionResult;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.FacetedMethod;
-import org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet;
-import org.apache.isis.core.metamodel.facets.param.autocomplete.MinLengthUtil;
-import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
-import org.apache.isis.core.metamodel.facets.properties.autocomplete.PropertyAutoCompleteFacet;
-import org.apache.isis.core.metamodel.facets.properties.choices.PropertyChoicesFacet;
-import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacet;
-import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet;
-import org.apache.isis.core.metamodel.facets.properties.update.init.PropertyInitializationFacet;
-import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
-import org.apache.isis.core.metamodel.interactions.InteractionUtils;
-import org.apache.isis.core.metamodel.interactions.PropertyAccessContext;
-import org.apache.isis.core.metamodel.interactions.PropertyModifyContext;
-import org.apache.isis.core.metamodel.interactions.PropertyUsabilityContext;
-import org.apache.isis.core.metamodel.interactions.PropertyVisibilityContext;
-import org.apache.isis.core.metamodel.interactions.UsabilityContext;
-import org.apache.isis.core.metamodel.interactions.ValidityContext;
-import org.apache.isis.core.metamodel.interactions.VisibilityContext;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.MutableCurrentHolder;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-
-public class OneToOneAssociationImpl extends ObjectAssociationAbstract implements OneToOneAssociation {
-
- public OneToOneAssociationImpl(
- final FacetedMethod facetedMethod,
- final ObjectMemberDependencies objectMemberDependencies) {
- this(facetedMethod, getSpecification(objectMemberDependencies.getSpecificationLoader(), facetedMethod.getType()),
- objectMemberDependencies);
- }
-
- protected OneToOneAssociationImpl(
- final FacetedMethod facetedMethod,
- final ObjectSpecification objectSpec,
- final ObjectMemberDependencies objectMemberDependencies) {
- super(facetedMethod, FeatureType.PROPERTY, objectSpec, objectMemberDependencies);
- }
-
- // /////////////////////////////////////////////////////////////
- // Hidden (or visible)
- // /////////////////////////////////////////////////////////////
-
- @Override
- public VisibilityContext<?> createVisibleInteractionContext(
- final ObjectAdapter ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
- Where where) {
- return new PropertyVisibilityContext(ownerAdapter, getIdentifier(), interactionInitiatedBy, where);
- }
-
- // /////////////////////////////////////////////////////////////
- // Disabled (or enabled)
- // /////////////////////////////////////////////////////////////
-
- @Override
- public UsabilityContext<?> createUsableInteractionContext(
- final ObjectAdapter ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy,
- Where where) {
- return new PropertyUsabilityContext(ownerAdapter, getIdentifier(), interactionInitiatedBy, where);
- }
-
- // /////////////////////////////////////////////////////////////
- // Validate
- // /////////////////////////////////////////////////////////////
-
- private ValidityContext<?> createValidateInteractionContext(
- final ObjectAdapter ownerAdapter,
- final ObjectAdapter proposedToReferenceAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- return new PropertyModifyContext(ownerAdapter, getIdentifier(), proposedToReferenceAdapter,
- interactionInitiatedBy);
- }
-
- @Override
- public Consent isAssociationValid(
- final ObjectAdapter ownerAdapter,
- final ObjectAdapter proposedAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- return isAssociationValidResult(ownerAdapter, proposedAdapter, interactionInitiatedBy).createConsent();
- }
-
- private InteractionResult isAssociationValidResult(
- final ObjectAdapter ownerAdapter,
- final ObjectAdapter proposedToReferenceAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- final ValidityContext<?> validityContext =
- createValidateInteractionContext(
- ownerAdapter, proposedToReferenceAdapter, interactionInitiatedBy
- );
- return InteractionUtils.isValidResult(this, validityContext);
- }
-
- // /////////////////////////////////////////////////////////////
- // init
- // /////////////////////////////////////////////////////////////
-
- @Override
- public void initAssociation(final ObjectAdapter ownerAdapter, final ObjectAdapter referencedAdapter) {
- final PropertyInitializationFacet initializerFacet = getFacet(PropertyInitializationFacet.class);
- if (initializerFacet != null) {
- initializerFacet.initProperty(ownerAdapter, referencedAdapter);
- }
- }
-
- // /////////////////////////////////////////////////////////////
- // Access (get, isEmpty)
- // /////////////////////////////////////////////////////////////
-
- @Override
- public ObjectAdapter get(
- final ObjectAdapter ownerAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- final PropertyOrCollectionAccessorFacet facet = getFacet(PropertyOrCollectionAccessorFacet.class);
- final Object referencedPojo =
- facet.getProperty(ownerAdapter, interactionInitiatedBy);
-
- if (referencedPojo == null) {
- return null;
- }
-
- return getPersistenceSessionService().adapterFor(referencedPojo);
- }
-
- // UNUSED
- private PropertyAccessContext createAccessInteractionContext(
- final ObjectAdapter ownerAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- final ObjectAdapter referencedAdapter = get(ownerAdapter, interactionInitiatedBy);
- return new PropertyAccessContext(
- ownerAdapter, getIdentifier(), referencedAdapter, interactionInitiatedBy
- );
- }
-
- @Override
- public boolean isEmpty(final ObjectAdapter ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy) {
- return get(ownerAdapter, interactionInitiatedBy) == null;
- }
-
- // /////////////////////////////////////////////////////////////
- // Set
- // /////////////////////////////////////////////////////////////
-
- @Override
- public void set(
- final ObjectAdapter ownerAdapter,
- final ObjectAdapter newReferencedAdapter) {
- set(ownerAdapter, newReferencedAdapter, InteractionInitiatedBy.USER);
- }
-
- @Override
- public void set(
- final ObjectAdapter ownerAdapter,
- final ObjectAdapter newReferencedAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- if (newReferencedAdapter != null) {
- setValue(ownerAdapter, newReferencedAdapter, interactionInitiatedBy);
- } else {
- clearValue(ownerAdapter, interactionInitiatedBy);
- }
- }
-
- /**
- * @see MutableCurrentHolder#set(ObjectAdapter, ObjectAdapter, InteractionInitiatedBy)
- */
- @Deprecated
- @Override
- public void setAssociation(
- final ObjectAdapter ownerAdapter,
- final ObjectAdapter newReferencedAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- setValue(ownerAdapter, newReferencedAdapter, interactionInitiatedBy);
- }
-
- private void setValue(
- final ObjectAdapter ownerAdapter,
- final ObjectAdapter newReferencedAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- final PropertySetterFacet setterFacet = getFacet(PropertySetterFacet.class);
- if (setterFacet == null) {
- return;
- }
- if (ownerAdapter.representsPersistent() && newReferencedAdapter != null && newReferencedAdapter.isTransient() && !newReferencedAdapter.getSpecification().isParented()) {
- // TODO: move to facet ?
- throw new IsisException("can't set a reference to a transient object from a persistent one: " + newReferencedAdapter.titleString(null) + " (transient)");
- }
- setterFacet.setProperty(ownerAdapter, newReferencedAdapter, interactionInitiatedBy);
- }
-
- /**
- * @see MutableCurrentHolder#set(ObjectAdapter, ObjectAdapter, InteractionInitiatedBy)
- */
- @Deprecated
- @Override
- public void clearAssociation(
- final ObjectAdapter ownerAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- clearValue(ownerAdapter, interactionInitiatedBy);
- }
-
- private void clearValue(
- final ObjectAdapter ownerAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- final PropertyClearFacet facet = getFacet(PropertyClearFacet.class);
- facet.clearProperty(ownerAdapter, interactionInitiatedBy);
- }
-
- // /////////////////////////////////////////////////////////////
- // defaults
- // /////////////////////////////////////////////////////////////
-
- @Override
- public ObjectAdapter getDefault(final ObjectAdapter ownerAdapter) {
- PropertyDefaultFacet propertyDefaultFacet = getFacet(PropertyDefaultFacet.class);
- // if no default on the association, attempt to find a default on the
- // specification (eg an int should
- // default to 0).
- if (propertyDefaultFacet == null || propertyDefaultFacet.isNoop()) {
- propertyDefaultFacet = this.getSpecification().getFacet(PropertyDefaultFacet.class);
- }
- if (propertyDefaultFacet == null) {
- return null;
- }
- return propertyDefaultFacet.getDefault(ownerAdapter);
- }
-
- @Override
- public void toDefault(final ObjectAdapter ownerAdapter) {
- // don't default optional fields
- final MandatoryFacet mandatoryFacet = getFacet(MandatoryFacet.class);
- if (mandatoryFacet != null && mandatoryFacet.isInvertedSemantics()) {
- return;
- }
-
- final ObjectAdapter defaultValue = getDefault(ownerAdapter);
- if (defaultValue != null) {
- initAssociation(ownerAdapter, defaultValue);
- }
- }
-
- // /////////////////////////////////////////////////////////////
- // choices and autoComplete
- // /////////////////////////////////////////////////////////////
-
- @Override
- public boolean hasChoices() {
- return getFacet(PropertyChoicesFacet.class) != null;
- }
-
- @Override
- public ObjectAdapter[] getChoices(
- final ObjectAdapter ownerAdapter,
- final InteractionInitiatedBy interactionInitiatedBy) {
- final PropertyChoicesFacet propertyChoicesFacet = getFacet(PropertyChoicesFacet.class);
- if (propertyChoicesFacet == null) {
- return null;
- }
- final Object[] pojoOptions = propertyChoicesFacet.getChoices(
- ownerAdapter,
- getSpecificationLoader(),
- interactionInitiatedBy);
- List<ObjectAdapter> adapters = Lists.transform(
- Lists.newArrayList(pojoOptions), ObjectAdapter.Functions.adapterForUsing(getPersistenceSessionService()));
- return adapters.toArray(new ObjectAdapter[]{});
- }
-
-
- @Override
- public boolean hasAutoComplete() {
- final PropertyAutoCompleteFacet propertyAutoCompleteFacet = getFacet(PropertyAutoCompleteFacet.class);
- return propertyAutoCompleteFacet != null;
- }
-
- @Override
- public ObjectAdapter[] getAutoComplete(
- final ObjectAdapter ownerAdapter,
- final String searchArg,
- final InteractionInitiatedBy interactionInitiatedBy) {
- final PropertyAutoCompleteFacet propertyAutoCompleteFacet = getFacet(PropertyAutoCompleteFacet.class);
- final Object[] pojoOptions = propertyAutoCompleteFacet.autoComplete(ownerAdapter, searchArg,
- interactionInitiatedBy);
- if (pojoOptions != null) {
- final ObjectAdapter[] options = new ObjectAdapter[pojoOptions.length];
- for (int i = 0; i < options.length; i++) {
- options[i] = getPersistenceSessionService().adapterFor(pojoOptions[i]);
- }
- return options;
- }
- return null;
- }
-
- @Override
- public int getAutoCompleteMinLength() {
- final PropertyAutoCompleteFacet propertyAutoCompleteFacet = getFacet(PropertyAutoCompleteFacet.class);
- return propertyAutoCompleteFacet != null? propertyAutoCompleteFacet.getMinLength(): MinLengthUtil.MIN_LENGTH_DEFAULT;
- }
-
-
- // /////////////////////////////////////////////////////////////
- // debug, toString
- // /////////////////////////////////////////////////////////////
-
- @Override
- public String debugData() {
- final DebugString debugString = new DebugString();
- debugString.indent();
- debugString.indent();
- getFacetedMethod().debugData(debugString);
- return debugString.toString();
- }
-
- @Override
- public String toString() {
- final ToString str = new ToString(this);
- str.append(super.toString());
- str.setAddComma();
- str.append("persisted", !isNotPersisted());
- str.append("type", getSpecification().getShortIdentifier());
- return str.toString();
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/6c888136/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 2e0512f..071f760 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
@@ -65,10 +65,10 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutor;
import org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder;
import org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilderContext;
-import org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionImpl;
+import org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionDefault;
import org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract;
-import org.apache.isis.core.metamodel.specloader.specimpl.OneToManyAssociationImpl;
-import org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationImpl;
+import org.apache.isis.core.metamodel.specloader.specimpl.OneToManyAssociationDefault;
+import org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationDefault;
public class ObjectSpecificationDefault extends ObjectSpecificationAbstract implements DebuggableWithTitle, FacetHolder {
@@ -223,9 +223,9 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
private ObjectAssociation createAssociation(final FacetedMethod facetMethod) {
if (facetMethod.getFeatureType().isCollection()) {
- return new OneToManyAssociationImpl(facetMethod, objectMemberDependencies);
+ return new OneToManyAssociationDefault(facetMethod, objectMemberDependencies);
} else if (facetMethod.getFeatureType().isProperty()) {
- return new OneToOneAssociationImpl(facetMethod, objectMemberDependencies);
+ return new OneToOneAssociationDefault(facetMethod, objectMemberDependencies);
} else {
return null;
}
@@ -246,7 +246,7 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
private ObjectAction createAction(final FacetedMethod facetedMethod) {
if (facetedMethod.getFeatureType().isAction()) {
- return new ObjectActionImpl(facetedMethod, objectMemberDependencies);
+ return new ObjectActionDefault(facetedMethod, objectMemberDependencies);
} else {
return null;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/6c888136/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedInTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedInTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedInTest.java
new file mode 100644
index 0000000..fdb3eaf
--- /dev/null
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedInTest.java
@@ -0,0 +1,44 @@
+package org.apache.isis.core.metamodel.specloader.specimpl;
+
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class ObjectActionMixedInTest {
+
+
+ public static class SuffixAfterUnderscore extends ObjectActionMixedInTest {
+
+ @Test
+ public void exactly_underscore() throws Exception {
+ final String s = ObjectActionMixedIn.suffixAfterUnderscore("_");
+ assertThat(s, is("_"));
+ }
+
+ @Test
+ public void ends_with_underscore() throws Exception {
+ final String s = ObjectActionMixedIn.suffixAfterUnderscore("abc_");
+ assertThat(s, is("Abc_"));
+ }
+
+ @Test
+ public void has_no_underscore() throws Exception {
+ final String s = ObjectActionMixedIn.suffixAfterUnderscore("defghij");
+ assertThat(s, is("Defghij"));
+ }
+
+ @Test
+ public void contains_one_underscore() throws Exception {
+ final String s = ObjectActionMixedIn.suffixAfterUnderscore("abc_def");
+ assertThat(s, is("Def"));
+ }
+
+ @Test
+ public void contains_more_than_one_underscore() throws Exception {
+ final String s = ObjectActionMixedIn.suffixAfterUnderscore("abc_def_ghi");
+ assertThat(s, is("Ghi"));
+ }
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/6c888136/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstractTest_getId_and_getName.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstractTest_getId_and_getName.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstractTest_getId_and_getName.java
index a115fda..5bf63dc 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstractTest_getId_and_getName.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstractTest_getId_and_getName.java
@@ -37,7 +37,6 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.TypedHolder;
import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
-import org.apache.isis.core.metamodel.spec.Instance;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
@@ -49,7 +48,7 @@ public class ObjectActionParameterAbstractTest_getId_and_getName {
public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
@Mock
- private ObjectActionImpl parentAction;
+ private ObjectActionDefault parentAction;
@Mock
private TypedHolder actionParamPeer;
@Mock
@@ -64,7 +63,7 @@ public class ObjectActionParameterAbstractTest_getId_and_getName {
private final static class ObjectActionParameterAbstractToTest extends ObjectActionParameterAbstract {
- private ObjectActionParameterAbstractToTest(final int number, final ObjectActionImpl objectAction, final TypedHolder peer) {
+ private ObjectActionParameterAbstractToTest(final int number, final ObjectActionDefault objectAction, final TypedHolder peer) {
super(number, objectAction, peer);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/6c888136/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionDefaultTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionDefaultTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionDefaultTest.java
new file mode 100644
index 0000000..7e446c1
--- /dev/null
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionDefaultTest.java
@@ -0,0 +1,107 @@
+/*
+ * 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.runtime.system;
+
+import org.jmock.Expectations;
+import org.jmock.auto.Mock;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import org.apache.isis.applib.Identifier;
+import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
+import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
+import org.apache.isis.core.metamodel.runtimecontext.MessageBrokerService;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.facets.FacetedMethod;
+import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
+import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
+import org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionDefault;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
+
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+
+public class ObjectActionDefaultTest {
+
+ @Rule
+ public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
+
+
+ private ObjectActionDefault action;
+
+ @Mock
+ private FacetedMethod mockFacetedMethod;
+
+ @Mock
+ private AuthenticationSessionProvider mockAuthenticationSessionProvider;
+ @Mock
+ private SpecificationLoader mockSpecificationLookup;
+ @Mock
+ private AdapterManager mockAdapterManager;
+ @Mock
+ private ServicesInjector mockServicesInjector;
+ @Mock
+ private MessageBrokerService mockMessageBrokerService;
+ @Mock
+ private PersistenceSessionService mockPersistenceSessionService;
+
+ @Before
+ public void setUp() throws Exception {
+
+ context.checking(new Expectations() {
+ {
+ one(mockFacetedMethod).getIdentifier();
+ will(returnValue(Identifier.actionIdentifier("Customer", "reduceheadcount")));
+ }
+ });
+
+ action = new ObjectActionDefault(mockFacetedMethod, new ObjectMemberDependencies(
+ mockSpecificationLookup, mockServicesInjector,
+ mockPersistenceSessionService));
+ }
+
+
+ @Test
+ public void testNameDefaultsToActionsMethodName() {
+ final String name = "Reduceheadcount";
+ final NamedFacet facet = new NamedFacetAbstract(name, true, mockFacetedMethod) {
+ };
+ context.checking(new Expectations() {
+ {
+ one(mockFacetedMethod).getFacet(NamedFacet.class);
+ will(returnValue(facet));
+ }
+ });
+ assertThat(action.getName(), is(equalTo(name)));
+ }
+
+ @Test
+ public void testId() {
+ assertEquals("reduceheadcount", action.getId());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/6c888136/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java
deleted file mode 100644
index 307ff00..0000000
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/ObjectActionImplTest.java
+++ /dev/null
@@ -1,107 +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.runtime.system;
-
-import org.jmock.Expectations;
-import org.jmock.auto.Mock;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-import org.apache.isis.applib.Identifier;
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.metamodel.runtimecontext.PersistenceSessionService;
-import org.apache.isis.core.metamodel.runtimecontext.MessageBrokerService;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.facets.FacetedMethod;
-import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
-import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
-import org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionImpl;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
-
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-
-public class ObjectActionImplTest {
-
- @Rule
- public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
-
-
- private ObjectActionImpl action;
-
- @Mock
- private FacetedMethod mockFacetedMethod;
-
- @Mock
- private AuthenticationSessionProvider mockAuthenticationSessionProvider;
- @Mock
- private SpecificationLoader mockSpecificationLookup;
- @Mock
- private AdapterManager mockAdapterManager;
- @Mock
- private ServicesInjector mockServicesInjector;
- @Mock
- private MessageBrokerService mockMessageBrokerService;
- @Mock
- private PersistenceSessionService mockPersistenceSessionService;
-
- @Before
- public void setUp() throws Exception {
-
- context.checking(new Expectations() {
- {
- one(mockFacetedMethod).getIdentifier();
- will(returnValue(Identifier.actionIdentifier("Customer", "reduceheadcount")));
- }
- });
-
- action = new ObjectActionImpl(mockFacetedMethod, new ObjectMemberDependencies(
- mockSpecificationLookup, mockServicesInjector,
- mockPersistenceSessionService));
- }
-
-
- @Test
- public void testNameDefaultsToActionsMethodName() {
- final String name = "Reduceheadcount";
- final NamedFacet facet = new NamedFacetAbstract(name, true, mockFacetedMethod) {
- };
- context.checking(new Expectations() {
- {
- one(mockFacetedMethod).getFacet(NamedFacet.class);
- will(returnValue(facet));
- }
- });
- assertThat(action.getName(), is(equalTo(name)));
- }
-
- @Test
- public void testId() {
- assertEquals("reduceheadcount", action.getId());
- }
-
-}