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/03/15 18:09:04 UTC
git commit: ISIS-364: suppress parts of title if context adapter
Updated Branches:
refs/heads/master c4de8708f -> fef459a9b
ISIS-364: suppress parts of title if context adapter
* also get rid of the HiddenFacetInTablesInferredFromTitleAnnotation (since this supercedes this)
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/fef459a9
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/fef459a9
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/fef459a9
Branch: refs/heads/master
Commit: fef459a9b1e187d0fc1fd319e3f3b14e79ad3f2d
Parents: c4de870
Author: Dan Haywood <da...@apache.org>
Authored: Fri Mar 15 17:08:41 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Fri Mar 15 17:08:41 2013 +0000
----------------------------------------------------------------------
.../viewer/wicket/model/models/EntityModel.java | 14 ++
.../CollectionContentsAsAjaxTablePanel.java | 7 +-
.../columns/ObjectAdapterTitleColumn.java | 16 ++-
.../entity/icontitle/EntityIconAndTitlePanel.java | 10 ++-
.../widgets/entitylink/EntityLinkSelect2Panel.java | 2 +
.../isis/viewer/wicket/ui/pages/PageAbstract.css | 4 +
.../IsisConfigurationBuilderResourceStreams.java | 2 +-
.../isis/core/metamodel/adapter/ObjectAdapter.java | 15 ++-
.../metamodel/facets/object/title/TitleFacet.java | 16 +++-
.../facets/object/title/TitleFacetAbstract.java | 11 ++
.../core/metamodel/spec/ObjectSpecification.java | 16 ++-
.../specimpl/ObjectSpecificationAbstract.java | 11 ++-
.../facets/object/title/TitleFacetUsingParser.java | 10 ++
...enFacetInTablesInferredFromTitleAnnotation.java | 33 -----
.../annotation/TitleAnnotationFacetFactory.java | 25 +----
.../annotation/TitleFacetViaTitleAnnotation.java | 74 ++++++-----
.../testspec/ObjectSpecificationStub.java | 8 +-
.../facets/AbstractFacetFactoryJUnit4TestCase.java | 2 +-
.../TitleAnnotationFacetFactoryTest.java | 95 ++++-----------
.../runtime/persistence/adapter/PojoAdapter.java | 26 ++---
.../src/main/java/app/QuickStartApplication.java | 19 ---
21 files changed, 199 insertions(+), 217 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
index c0f8d76..5827fa8 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
@@ -301,6 +301,18 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> {
this.renderingHint = renderingHint;
}
+ public ObjectAdapterMemento getContextAdapterIfAny() {
+ return contextAdapterIfAny;
+ }
+
+ /**
+ * Used as a hint when the {@link #getRenderingHint()} is {@link RenderingHint#PARENTED_TITLE_COLUMN},
+ * provides a context adapter to obtain the title.
+ */
+ public void setContextAdapterIfAny(ObjectAdapterMemento contextAdapterIfAny) {
+ this.contextAdapterIfAny = contextAdapterIfAny;
+ }
+
public Mode getMode() {
return mode;
}
@@ -440,6 +452,7 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> {
}
private final PendingModel pendingModel;
+ private ObjectAdapterMemento contextAdapterIfAny;
public ObjectAdapter getPendingElseCurrentAdapter() {
return pendingModel.getPendingElseCurrentAdapter();
@@ -474,4 +487,5 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> {
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/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 4421d7a..f969949 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
@@ -48,6 +48,7 @@ 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.viewer.wicket.model.common.SelectionHandler;
+import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
import org.apache.isis.viewer.wicket.model.models.EntityModel.RenderingHint;
import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.columns.ColumnAbstract;
@@ -89,7 +90,7 @@ public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityColl
List<ObjectAction> bulkActions = determineBulkActions();
addToggleboxColumnIfRequired(columns, bulkActions);
- addTitleColumn(columns, model.isParented()? RenderingHint.PARENTED_TITLE_COLUMN: RenderingHint.STANDALONE_TITLE_COLUMN);
+ addTitleColumn(columns, model.getParentObjectAdapterMemento());
addPropertyColumnsIfRequired(columns);
addSelectedButtonIfRequired(columns);
@@ -154,8 +155,8 @@ public class CollectionContentsAsAjaxTablePanel extends PanelAbstract<EntityColl
}
- private static void addTitleColumn(final List<IColumn<ObjectAdapter,String>> columns, RenderingHint renderingHint) {
- columns.add(new ObjectAdapterTitleColumn(renderingHint));
+ private static void addTitleColumn(final List<IColumn<ObjectAdapter,String>> columns, ObjectAdapterMemento parentAdapterMementoIfAny) {
+ columns.add(new ObjectAdapterTitleColumn(parentAdapterMementoIfAny));
}
private void addPropertyColumnsIfRequired(final List<IColumn<ObjectAdapter,String>> columns) {
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterTitleColumn.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterTitleColumn.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterTitleColumn.java
index c65ca6e..96e744e 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterTitleColumn.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterTitleColumn.java
@@ -25,6 +25,7 @@ import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.model.models.EntityModel.RenderingHint;
import org.apache.isis.viewer.wicket.ui.ComponentFactory;
@@ -33,15 +34,15 @@ import org.apache.isis.viewer.wicket.ui.ComponentType;
public class ObjectAdapterTitleColumn extends ColumnAbstract<ObjectAdapter> {
private static final long serialVersionUID = 1L;
- private final RenderingHint renderingHint;
+ private final ObjectAdapterMemento parentAdapterMementoIfAny;
- private static String columnName(RenderingHint renderingHint) {
- return (renderingHint.isInParentedTableTitleColumn()? "Related ":"") + "Object";
+ private static String columnName(ObjectAdapterMemento parentAdapterMementoIfAny) {
+ return (parentAdapterMementoIfAny != null? "Related ":"") + "Object";
}
- public ObjectAdapterTitleColumn(RenderingHint renderingHint) {
- super(columnName(renderingHint)); // i18n
- this.renderingHint = renderingHint;
+ public ObjectAdapterTitleColumn(ObjectAdapterMemento parentAdapterMementoIfAny) {
+ super(columnName(parentAdapterMementoIfAny)); // i18n
+ this.parentAdapterMementoIfAny = parentAdapterMementoIfAny;
}
@Override
@@ -53,7 +54,8 @@ public class ObjectAdapterTitleColumn extends ColumnAbstract<ObjectAdapter> {
private Component createComponent(final String id, final IModel<ObjectAdapter> rowModel) {
final ObjectAdapter adapter = rowModel.getObject();
final EntityModel model = new EntityModel(adapter);
- model.setRenderingHint(renderingHint);
+ model.setRenderingHint(parentAdapterMementoIfAny != null? RenderingHint.PARENTED_TITLE_COLUMN: RenderingHint.STANDALONE_TITLE_COLUMN);
+ model.setContextAdapterIfAny(parentAdapterMementoIfAny);
final ComponentFactory componentFactory = findComponentFactory(ComponentType.ENTITY_LINK, model);
return componentFactory.createComponent(id, model);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
index 5a0a5d9..e10bc93 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
@@ -30,7 +30,9 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.ResourceReference;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
+import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
import org.apache.isis.viewer.wicket.model.models.PageType;
@@ -114,7 +116,7 @@ public class EntityIconAndTitlePanel extends PanelAbstract<EntityModel> {
EntityModel model = getModel();
final ObjectAdapter adapter = model.getObject();
if (adapter != null) {
- String titleString = adapter.titleString();
+ String titleString = adapter.titleString(getContextAdapterIfAny());
if(model.getRenderingHint().isInStandaloneTableTitleColumn()) {
return abbreviated(titleString, getSettings().getTitleLengthInStandaloneTables());
}
@@ -126,6 +128,12 @@ public class EntityIconAndTitlePanel extends PanelAbstract<EntityModel> {
return "(no object)";
}
}
+
+ public ObjectAdapter getContextAdapterIfAny() {
+ EntityModel model = getModel();
+ ObjectAdapterMemento contextAdapterMementoIfAny = model.getContextAdapterIfAny();
+ return contextAdapterMementoIfAny != null? contextAdapterMementoIfAny.getObjectAdapter(ConcurrencyChecking.NO_CHECK): null;
+ }
static String abbreviated(final String str, final int maxLength) {
int length = str.length();
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
index 30c1701..8dc6852 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
@@ -35,6 +35,7 @@ import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.FormComponentPanel;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.panel.ComponentFeedbackPanel;
+import org.apache.wicket.model.IModel;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
@@ -337,6 +338,7 @@ public class EntityLinkSelect2Panel extends FormComponentPanelAbstract<ObjectAda
private void addOrReplaceIconAndTitle(ObjectAdapter pendingOrCurrentAdapter) {
final EntityModel entityModelForLink = new EntityModel(pendingOrCurrentAdapter);
+ entityModelForLink.setContextAdapterIfAny(getEntityModel().getContextAdapterIfAny());
entityModelForLink.setRenderingHint(getEntityModel().getRenderingHint());
final ComponentFactory componentFactory = getComponentFactoryRegistry().findComponentFactory(ComponentType.ENTITY_ICON_AND_TITLE, entityModelForLink);
final Component component = componentFactory.createComponent(entityModelForLink);
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
index 1cdadb5..0566fb9 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
@@ -326,6 +326,10 @@ form fieldset .okButton {
margin:0px;
padding:0px;
}
+.myBlockContainer fieldset:not(:first-child) {
+ margin-top: 30px
+}
+
.myBlockContainer legend {
color:#423D37;
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationBuilderResourceStreams.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationBuilderResourceStreams.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationBuilderResourceStreams.java
index 6575d6b..1ee0fd4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationBuilderResourceStreams.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/config/IsisConfigurationBuilderResourceStreams.java
@@ -189,7 +189,7 @@ public class IsisConfigurationBuilderResourceStreams implements IsisConfiguratio
protected void loadConfigurationResource(final IsisConfigurationDefault configuration, final String configurationResource, final NotFoundPolicy notFoundPolicy) {
try {
final PropertiesReader propertiesReader = loadConfigurationResource(resourceStreamSource, configurationResource);
- LOG.info("loading properies from " + configurationResource);
+ LOG.info("loading properties from " + configurationResource);
configuration.add(propertiesReader.getProperties());
configurationResourcesFound.add(configurationResource);
return;
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
index 2a5a9e2..e1690ba 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
@@ -25,6 +25,7 @@ import org.apache.isis.core.metamodel.adapter.oid.CollectionOid;
import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
import org.apache.isis.core.metamodel.adapter.version.Version;
+import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
import org.apache.isis.core.metamodel.spec.ElementSpecificationProvider;
import org.apache.isis.core.metamodel.spec.Instance;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -51,12 +52,24 @@ public interface ObjectAdapter extends Instance, org.apache.isis.applib.annotati
Object getObject();
/**
- * Returns the title to display this object with, which is usually got from
+ * Returns the title to display this object with, usually obtained from
* the wrapped {@link #getObject() domain object}.
+ *
+ * @deprecated - use {@link #titleString(ObjectAdapter)}
*/
+ @Deprecated
String titleString();
/**
+ * Returns the title to display this object with, rendered within the context
+ * of some other adapter.
+ *
+ * <p>
+ * @see TitleFacet#title(ObjectAdapter, ObjectAdapter, org.apache.isis.applib.profiles.Localization)
+ */
+ String titleString(ObjectAdapter contextAdapter);
+
+ /**
* Return an {@link Instance} of the specified {@link Specification} with
* respect to this {@link ObjectAdapter}.
*
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/TitleFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/TitleFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/TitleFacet.java
index 19bf698..bb76b08 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/TitleFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/TitleFacet.java
@@ -38,5 +38,19 @@ import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
*/
public interface TitleFacet extends Facet {
- String title(final ObjectAdapter object, Localization localization);
+ /**
+ * Provide a title for the target object, with respect to the specified {@link Localization}.
+ */
+ String title(final ObjectAdapter targetAdapter, Localization localization);
+
+ /**
+ * Provide a title for the target object, in the context of the context object, with respect to the specified {@link Localization}.
+ *
+ * <p>
+ * For example, if the title is of an object within a parented collection, then the
+ * context object would be the parent. Thus, the title might be shortened so that it does not
+ * needlessly incorporate the title of the parent (context) object.
+ */
+ String title(final ObjectAdapter contextAdapter, final ObjectAdapter targetAdapter, Localization localization);
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/TitleFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/TitleFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/TitleFacetAbstract.java
index 99aa14d..0b1dc30 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/TitleFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/TitleFacetAbstract.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.object.title;
+import org.apache.isis.applib.profiles.Localization;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -32,4 +34,13 @@ public abstract class TitleFacetAbstract extends FacetAbstract implements TitleF
public TitleFacetAbstract(final FacetHolder holder) {
super(type(), holder, Derivation.NOT_DERIVED);
}
+
+ /**
+ * Default implementation that simply delegates to {@link #title(ObjectAdapter, Localization)}.
+ */
+ @Override
+ public String title(ObjectAdapter contextAdapter, ObjectAdapter targetAdapter, Localization localization) {
+ return title(targetAdapter, localization);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
index f7ee214..553db32 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
@@ -63,9 +63,6 @@ import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitut
* subclasses, which in turn reference their superclass) they need be created
* first, and then later work out its internals. Hence we create
* {@link ObjectSpecification}s as we need them, and then introspect them later.
- *
- * <p>
- * REVIEW: why is there no Help method for classes?
*/
public interface ObjectSpecification extends Specification, ObjectActionContainer, ObjectAssociationContainer, Hierarchical, Dirtiable, DefaultProvider {
@@ -169,10 +166,22 @@ public interface ObjectSpecification extends Specification, ObjectActionContaine
* <p>
* Corresponds to the {@link TitleFacet#value()) value} of
* {@link TitleFacet}; is not necessarily immutable.
+ *
+ * @deprecated use {@link #getTitle(ObjectAdapter, ObjectAdapter, Localization)}
*/
+ @Deprecated
String getTitle(ObjectAdapter adapter, Localization localization);
/**
+ * Returns the title to display of target adapter, rendered within the context
+ * of some other adapter (if any).
+ *
+ * <p>
+ * @see TitleFacet#title(ObjectAdapter, ObjectAdapter, org.apache.isis.applib.profiles.Localization)
+ */
+ String getTitle(ObjectAdapter contextAdapterIfAny, ObjectAdapter targetAdapter, Localization localization);
+
+ /**
* Returns the name of an icon to use for the specified object.
*
* <p>
@@ -327,4 +336,5 @@ public interface ObjectSpecification extends Specification, ObjectActionContaine
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/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 0b3fd9e..2a0fce8 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
@@ -378,9 +378,14 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
// //////////////////////////////////////////////////////////////////////
@Override
- public String getTitle(final ObjectAdapter adapter, final Localization localization) {
+ public String getTitle(final ObjectAdapter targetAdapter, final Localization localization) {
+ return getTitle(null, targetAdapter, localization);
+ }
+
+ @Override
+ public String getTitle(ObjectAdapter contextAdapterIfAny, ObjectAdapter targetAdapter, Localization localization) {
if (titleFacet != null) {
- final String titleString = titleFacet.title(adapter, localization);
+ final String titleString = titleFacet.title(contextAdapterIfAny, targetAdapter, localization);
if (titleString != null && !titleString.equals("")) {
return titleString;
}
@@ -388,6 +393,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
return (this.isService() ? "" : "Untitled ") + getSingularName();
}
+
@Override
public String getIconName(final ObjectAdapter reference) {
return iconFacet == null ? null : iconFacet.iconName(reference);
@@ -1003,4 +1009,5 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
return specificationLookup;
}
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/TitleFacetUsingParser.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/TitleFacetUsingParser.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/TitleFacetUsingParser.java
index 6f1b4de..1d95f8e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/TitleFacetUsingParser.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/TitleFacetUsingParser.java
@@ -57,6 +57,14 @@ public class TitleFacetUsingParser extends FacetAbstract implements TitleFacet {
return parser.displayTitleOf(object, localization);
}
+ @Override
+ public String title(ObjectAdapter contextAdapter, ObjectAdapter targetAdapter, Localization localization) {
+ return title(targetAdapter, localization);
+ }
+
+ /**
+ * not API
+ */
public String title(final ObjectAdapter adapter, final String usingMask) {
if (adapter == null) {
return null;
@@ -69,6 +77,7 @@ public class TitleFacetUsingParser extends FacetAbstract implements TitleFacet {
return parser.displayTitleOf(object, usingMask);
}
+
// //////////////////////////////////////////////////////
// Dependencies (from constructor)
// //////////////////////////////////////////////////////
@@ -80,4 +89,5 @@ public class TitleFacetUsingParser extends FacetAbstract implements TitleFacet {
return dependencyInjector;
}
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/annotation/HiddenFacetInTablesInferredFromTitleAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/annotation/HiddenFacetInTablesInferredFromTitleAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/annotation/HiddenFacetInTablesInferredFromTitleAnnotation.java
deleted file mode 100644
index cb944c3..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/annotation/HiddenFacetInTablesInferredFromTitleAnnotation.java
+++ /dev/null
@@ -1,33 +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.progmodel.facets.object.title.annotation;
-
-import org.apache.isis.applib.annotation.When;
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.progmodel.facets.members.hidden.HiddenFacetImpl;
-
-public class HiddenFacetInTablesInferredFromTitleAnnotation extends HiddenFacetImpl {
-
- public HiddenFacetInTablesInferredFromTitleAnnotation(FacetHolder holder) {
- super(When.ALWAYS, Where.ALL_TABLES, holder);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java
index 957170b..8362098 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java
@@ -32,14 +32,10 @@ import org.apache.isis.core.metamodel.adapter.LocalizationProvider;
import org.apache.isis.core.metamodel.adapter.LocalizationProviderAware;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
-import org.apache.isis.core.metamodel.facetapi.Facet;
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.hide.HiddenFacet;
import org.apache.isis.core.metamodel.methodutils.MethodScope;
import org.apache.isis.core.progmodel.facets.MethodFinderUtils;
import org.apache.isis.core.progmodel.facets.fallback.FallbackFacetFactory;
@@ -51,7 +47,7 @@ public class TitleAnnotationFacetFactory extends FacetFactoryAbstract implements
private LocalizationProvider localizationProvider;
public TitleAnnotationFacetFactory() {
- super(FeatureType.OBJECTS_AND_PROPERTIES);
+ super(FeatureType.OBJECTS_ONLY);
}
/**
@@ -82,25 +78,6 @@ public class TitleAnnotationFacetFactory extends FacetFactoryAbstract implements
FacetUtil.addFacet(new TitleFacetViaTitleAnnotation(titleComponents, facetHolder, adapterManager, localizationProvider));
}
- /**
- * Any property annotated with <tt>Title</tt> is hidden by default in tables.
- */
- @Override
- public void process(final ProcessMethodContext processMethodContext) {
- final FacetedMethod facetHolder = processMethodContext.getFacetHolder();
- if(facetHolder.containsFacet(HiddenFacet.class)) {
- // don't overwrite any facet already installed
- return;
- }
- // otherwise, install hidden facet if this property annotated with @Title
- final Title annotation = Annotations.getAnnotation(processMethodContext.getMethod(), Title.class);
- FacetUtil.addFacet(create(annotation, facetHolder));
- }
-
- private Facet create(final Title annotation, final FacetHolder holder) {
- return annotation != null ? new HiddenFacetInTablesInferredFromTitleAnnotation(holder) : null;
- }
-
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
index 384fc47..44df5e9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
@@ -23,12 +23,14 @@ import java.lang.reflect.Method;
import java.util.List;
import com.google.common.base.Function;
+import com.google.common.base.Objects;
import com.google.common.base.Strings;
import org.apache.log4j.Logger;
import org.apache.isis.applib.annotation.Title;
import org.apache.isis.applib.profiles.Localization;
+import org.apache.isis.core.commons.lang.StringUtils;
import org.apache.isis.core.metamodel.adapter.LocalizationProvider;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
@@ -96,25 +98,52 @@ public class TitleFacetViaTitleAnnotation extends TitleFacetAbstract {
}
@Override
- public String title(final ObjectAdapter owningAdapter, final Localization localization) {
+ public String title(final ObjectAdapter targetAdapter, final Localization localization) {
+ return title(null, targetAdapter, localization);
+ }
+
+ private String titleOf(final ObjectAdapter adapter) {
+ if (adapter == null) {
+ return null;
+ }
+ return adapter.titleString(null);
+ }
+
+ public List<TitleComponent> getComponents() {
+ return components;
+ }
+
+ private static String abbreviated(final String str, final int maxLength) {
+ return str.length() < maxLength ? str : str.substring(0, maxLength - 3) + "...";
+ }
+
+ @Override
+ public String title(ObjectAdapter contextAdapter, ObjectAdapter targetAdapter, Localization localization) {
final StringBuilder stringBuilder = new StringBuilder();
try {
for (final TitleComponent component : this.components) {
- String title = null;
- final Object titlePart = AdapterInvokeUtils.invoke(component.getMethod(), owningAdapter);
- if (titlePart != null) {
- // use either titleFacet...
- title = titleOf(titlePart);
- if (Strings.isNullOrEmpty(title)) {
- // or the toString() otherwise
- title = titlePart.toString().trim();
- }
- }
+ final Object titlePart = AdapterInvokeUtils.invoke(component.getMethod(), targetAdapter);
+ if (titlePart == null) {
+ continue;
+ }
+ // ignore context, if provided
+ final ObjectAdapter titlePartAdapter = adapterManager.adapterFor(titlePart);
+ if(Objects.equal(contextAdapter, titlePartAdapter)) {
+ continue;
+ }
+ String title = titleOf(titlePartAdapter);
if (Strings.isNullOrEmpty(title)) {
+ // ... use the toString() otherwise
+ // (mostly for benefit of testing...)
+ title = titlePart.toString().trim();
+ }
+ if(StringUtils.isNullOrEmpty(title)) {
continue;
}
- stringBuilder.append(component.getPrepend());
+ if(stringBuilder.length() > 0) {
+ stringBuilder.append(component.getPrepend());
+ }
stringBuilder.append(abbreviated(title, component.abbreviateTo));
stringBuilder.append(component.getAppend());
}
@@ -125,25 +154,4 @@ public class TitleFacetViaTitleAnnotation extends TitleFacetAbstract {
return "Failed Title";
}
}
-
- private String titleOf(final Object domainObject) {
- final ObjectAdapter adapter = adapterManager.adapterFor(domainObject);
- if (adapter == null) {
- return null;
- }
- final ObjectSpecification returnSpec = adapter.getSpecification();
- if (!returnSpec.containsFacet(TitleFacet.class)) {
- return null;
- }
- return returnSpec.getTitle(adapter, localizationProvider.getLocalization());
- }
-
- public List<TitleComponent> getComponents() {
- return components;
- }
-
- private static String abbreviated(final String str, final int maxLength) {
- return str.length() < maxLength ? str : str.substring(0, maxLength - 3) + "...";
- }
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/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 753a4ba..859977d 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
@@ -264,7 +264,12 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
}
@Override
- public String getTitle(final ObjectAdapter adapter, final Localization localization) {
+ public String getTitle(final ObjectAdapter targetAdapter, final Localization localization) {
+ return getTitle(null, targetAdapter, localization);
+ }
+
+ @Override
+ public String getTitle(ObjectAdapter contextAdapterIfAny, ObjectAdapter targetAdapter, Localization localization) {
return title;
}
@@ -483,4 +488,5 @@ public class ObjectSpecificationStub extends FacetHolderImpl implements ObjectSp
}
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/AbstractFacetFactoryJUnit4TestCase.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/AbstractFacetFactoryJUnit4TestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/AbstractFacetFactoryJUnit4TestCase.java
index 2a0dce7..b63c9d2 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/AbstractFacetFactoryJUnit4TestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/AbstractFacetFactoryJUnit4TestCase.java
@@ -45,7 +45,7 @@ import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
public abstract class AbstractFacetFactoryJUnit4TestCase {
@Rule
- public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_ONLY);
+ public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
@Mock
protected SpecificationLoaderSpi reflector;
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
index 399a642..c519e50 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/object/ident/title/annotation/TitleAnnotationFacetFactoryTest.java
@@ -26,55 +26,45 @@ import java.util.Arrays;
import java.util.List;
import org.jmock.Expectations;
-import org.jmock.Mockery;
-import org.jmock.integration.junit4.JMock;
-import org.jmock.integration.junit4.JUnit4Mockery;
+import org.jmock.auto.Mock;
import org.junit.After;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
import org.apache.isis.applib.annotation.Title;
-import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.metamodel.adapter.LocalizationDefault;
import org.apache.isis.core.metamodel.adapter.LocalizationProvider;
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.facets.FacetFactory.ProcessClassContext;
-import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
-import org.apache.isis.core.metamodel.facets.hide.HiddenFacet;
import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.progmodel.facets.AbstractFacetFactoryTest;
+import org.apache.isis.core.progmodel.facets.AbstractFacetFactoryJUnit4TestCase;
import org.apache.isis.core.progmodel.facets.object.title.annotation.TitleAnnotationFacetFactory;
import org.apache.isis.core.progmodel.facets.object.title.annotation.TitleFacetViaTitleAnnotation;
import org.apache.isis.core.progmodel.facets.object.title.annotation.TitleFacetViaTitleAnnotation.TitleComponent;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.ClassUnderTest;
-@RunWith(JMock.class)
-public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
-
- private final Mockery context = new JUnit4Mockery();
- private ObjectAdapter objectAdapter;
+public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4TestCase {
+ @ClassUnderTest
private TitleAnnotationFacetFactory facetFactory;
+ @Mock
+ private ObjectAdapter mockObjectAdapter;
+ @Mock
private SpecificationLoader mockSpecificationLookup;
+ @Mock
private AdapterManager mockAdapterMap;
+ @Mock
private LocalizationProvider mockLocalizationProvider;
@Before
- @Override
public void setUp() throws Exception {
- super.setUp();
-
- mockSpecificationLookup = context.mock(SpecificationLoader.class);
- mockAdapterMap = context.mock(AdapterManager.class);
- mockLocalizationProvider = context.mock(LocalizationProvider.class);
-
- objectAdapter = context.mock(ObjectAdapter.class);
- facetFactory = new TitleAnnotationFacetFactory();
+ facetFactory = context.getClassUnderTest();
facetFactory.setAdapterManager(mockAdapterMap);
facetFactory.setSpecificationLookup(mockSpecificationLookup);
facetFactory.setLocalizationProvider(mockLocalizationProvider);
@@ -109,13 +99,13 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
facetFactory.process(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
final Facet facet = facetedMethod.getFacet(TitleFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof TitleFacetViaTitleAnnotation);
+ Assert.assertNotNull(facet);
+ Assert.assertTrue(facet instanceof TitleFacetViaTitleAnnotation);
final TitleFacetViaTitleAnnotation titleFacetViaTitleAnnotation = (TitleFacetViaTitleAnnotation) facet;
final List<Method> titleMethods = Arrays.asList(Customer.class.getMethod("someTitle"));
for (int i = 0; i < titleMethods.size(); i++) {
- assertEquals(titleMethods.get(i), titleFacetViaTitleAnnotation.getComponents().get(i).getMethod());
+ Assert.assertEquals(titleMethods.get(i), titleFacetViaTitleAnnotation.getComponents().get(i).getMethod());
}
}
@@ -144,26 +134,26 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
facetFactory.process(new ProcessClassContext(Customer2.class, methodRemover, facetedMethod));
final Facet facet = facetedMethod.getFacet(TitleFacet.class);
- assertNotNull(facet);
- assertTrue(facet instanceof TitleFacetViaTitleAnnotation);
+ Assert.assertNotNull(facet);
+ Assert.assertTrue(facet instanceof TitleFacetViaTitleAnnotation);
final TitleFacetViaTitleAnnotation titleFacetViaTitleAnnotation = (TitleFacetViaTitleAnnotation) facet;
final List<Method> titleMethods = Arrays.asList(Customer2.class.getMethod("titleElement1"), Customer2.class.getMethod("titleElement3"), Customer2.class.getMethod("titleElement2"));
final List<TitleComponent> components = titleFacetViaTitleAnnotation.getComponents();
for (int i = 0; i < titleMethods.size(); i++) {
- assertEquals(titleMethods.get(i), components.get(i).getMethod());
+ Assert.assertEquals(titleMethods.get(i), components.get(i).getMethod());
}
final Customer2 customer = new Customer2();
context.checking(new Expectations() {
{
- allowing(objectAdapter).getObject();
+ allowing(mockObjectAdapter).getObject();
will(returnValue(customer));
}
});
- final String title = titleFacetViaTitleAnnotation.title(objectAdapter, mockLocalizationProvider.getLocalization());
+ final String title = titleFacetViaTitleAnnotation.title(mockObjectAdapter, mockLocalizationProvider.getLocalization());
assertThat(title, is("titleElement1. titleElement3,titleElement2"));
}
@@ -175,7 +165,7 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
facetFactory.process(new ProcessClassContext(Customer3.class, methodRemover, facetedMethod));
- assertNull(facetedMethod.getFacet(TitleFacet.class));
+ Assert.assertNull(facetedMethod.getFacet(TitleFacet.class));
}
public static class Customer4 {
@@ -234,11 +224,11 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
context.checking(new Expectations() {
{
- allowing(objectAdapter).getObject();
+ allowing(mockObjectAdapter).getObject();
will(returnValue(customer));
}
});
- final String title = titleFacetViaTitleAnnotation.title(objectAdapter, mockLocalizationProvider.getLocalization());
+ final String title = titleFacetViaTitleAnnotation.title(mockObjectAdapter, mockLocalizationProvider.getLocalization());
assertThat(title, is("titleElement1 titleElement3 titleElement5 3 this needs to be trimmed"));
}
@@ -255,44 +245,5 @@ public class TitleAnnotationFacetFactoryTest extends AbstractFacetFactoryTest {
}
}
- @Test
- public void hiddenFacetAnnotationInferredFromTitleAnnotation() throws Exception {
-
- final Method propertyMethod = findMethod(Customer5.class, "titleProperty");
-
- facetFactory.process(new ProcessMethodContext(Customer5.class, propertyMethod, methodRemover, facetedMethod));
-
- final Customer5 customer = new Customer5();
-
- context.checking(new Expectations() {
- {
- allowing(objectAdapter).getObject();
- will(returnValue(customer));
- }
- });
- final HiddenFacet facet = facetedMethod.getFacet(HiddenFacet.class);
- assertNotNull(facet);
- assertThat(facet.where(), is(Where.ALL_TABLES));
- }
-
-
- @Test
- public void hiddenFacetAnnotationNotInferredIfTitleAnnotationNotPresent() throws Exception {
-
- final Method propertyMethod = findMethod(Customer5.class, "otherProperty");
-
- facetFactory.process(new ProcessMethodContext(Customer5.class, propertyMethod, methodRemover, facetedMethod));
-
- final Customer5 customer = new Customer5();
-
- context.checking(new Expectations() {
- {
- allowing(objectAdapter).getObject();
- will(returnValue(customer));
- }
- });
- final HiddenFacet facet = facetedMethod.getFacet(HiddenFacet.class);
- assertNull(facet);
- }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
index eeedea7..04503c1 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapter.java
@@ -40,6 +40,7 @@ import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
import org.apache.isis.core.metamodel.adapter.version.Version;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
+import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
import org.apache.isis.core.metamodel.spec.ElementSpecificationProvider;
import org.apache.isis.core.metamodel.spec.Instance;
import org.apache.isis.core.metamodel.spec.InstanceAbstract;
@@ -371,15 +372,20 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
*/
@Override
public String titleString() {
+ return titleString(null);
+ }
+
+ @Override
+ public String titleString(ObjectAdapter contextAdapterIfAny) {
if (getSpecification().isParentedOrFreeCollection()) {
final CollectionFacet facet = getSpecification().getFacet(CollectionFacet.class);
return collectionTitleString(facet);
} else {
- return objectTitleString();
+ return objectTitleString(contextAdapterIfAny);
}
}
- private String objectTitleString() {
+ private String objectTitleString(ObjectAdapter contextAdapterIfAny) {
if (isNew()) {
return "";
}
@@ -387,19 +393,7 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
return (String) getObject();
}
final ObjectSpecification specification = getSpecification();
- String title = specification.getTitle(this, localization);
-
- // looking at the implementation of the preceding code, this can never happen;
- // and removing it means we can get rid of the dependency on PersistenceSession.
-
-// if (title == null) {
-// if (resolveState.isGhost()) {
-// if (LOG.isInfoEnabled()) {
-// LOG.info("attempting to use unresolved object; resolving it immediately: oid=" + this.getOid());
-// }
-// getPersistenceSession().resolveImmediately(this);
-// }
-// }
+ String title = specification.getTitle(contextAdapterIfAny, this, localization);
if (title == null) {
title = getDefaultTitle();
@@ -552,4 +546,6 @@ public class PojoAdapter extends InstanceAbstract implements ObjectAdapter {
return authenticationSession;
}
+
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/fef459a9/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/java/app/QuickStartApplication.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/java/app/QuickStartApplication.java b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/java/app/QuickStartApplication.java
index a5ea693..bf3ab6d 100644
--- a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/java/app/QuickStartApplication.java
+++ b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/java/app/QuickStartApplication.java
@@ -90,25 +90,6 @@ public class QuickStartApplication extends IsisWicketApplication {
return Modules.override(isisDefaults).with(quickstartOverrides);
}
- public static class Archive {
- private final String name;
- private final String url;
-
- public Archive(String name, String url) {
- this.name = name;
- this.url = url;
- }
-
- public String getName() {
- return name;
- }
- public String getUrl() {
- return url;
- }
-
- }
-
-
private static String readLines(final String resourceName) {
try {
List<String> readLines = Resources.readLines(Resources.getResource(QuickStartApplication.class, resourceName), Charset.defaultCharset());