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/11/11 00:08:07 UTC

[3/6] isis git commit: ISIS-1242: fixing breadcrumb model so can change title.

ISIS-1242: fixing breadcrumb model so can change title.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/c492e358
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/c492e358
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/c492e358

Branch: refs/heads/master
Commit: c492e3584da95e484772ca4536fb3ad29013a2b5
Parents: 49474d7
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Nov 9 22:50:09 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Nov 10 16:46:56 2015 +0000

----------------------------------------------------------------------
 .../model/mementos/PageParameterNames.java      |  2 +-
 .../widgets/breadcrumbs/BreadcrumbModel.java    | 99 +++++++++++++-------
 .../widgets/breadcrumbs/BreadcrumbPanel.java    | 11 +--
 3 files changed, 65 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/c492e358/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/PageParameterNames.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/PageParameterNames.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/PageParameterNames.java
index 75f1a64..77617c3 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/PageParameterNames.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/PageParameterNames.java
@@ -86,7 +86,7 @@ public enum PageParameterNames {
 
     /**
      * Returns the {@link #name()} formatted as
-     * {@link Strings#camelCase(String) camel case}.
+     * {@link StringExtensions#asCamel(String) camel case}.
      * 
      * <p>
      * For example, <tt>ACTION_TYPE</tt> becomes <tt>actionType</tt>.

http://git-wip-us.apache.org/repos/asf/isis/blob/c492e358/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
index 6f58943..b3e5e94 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
@@ -26,6 +26,10 @@ import com.google.common.collect.Maps;
 
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.model.mementos.PageParameterNames;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 
@@ -36,7 +40,6 @@ public class BreadcrumbModel implements Serializable {
     private static final int MAX_SIZE = 5;
 
     private final Map<String, EntityModel> entityModelByOidStr = Maps.newHashMap();
-    private final Map<EntityModel, String> titleByEntityModel = Maps.newHashMap();
     private final Map<EntityModel, String> oidStrByEntityModel = Maps.newHashMap();
     private final List<EntityModel> list = Lists.newArrayList();
     
@@ -51,33 +54,38 @@ public class BreadcrumbModel implements Serializable {
             return;
         }
 
-        final String oidStr = oidStrFor(entityModel);
+        final String oidStr = oidStrFrom(entityModel);
         
-        removeExisting(oidStr);
+        remove(oidStr);
         addToStart(oidStr, entityModel);
         
         trimTo(MAX_SIZE);
     }
 
-    private String oidStrFor(final EntityModel entityModel) {
+    private String oidStrFrom(final EntityModel entityModel) {
         final PageParameters pageParameters = entityModel.getPageParametersWithoutUiHints();
-        return PageParameterNames.OBJECT_OID.getStringFrom(pageParameters);
+        return oidStrFrom(pageParameters);
+    }
+
+    private String oidStrFrom(final PageParameters pageParameters) {
+        String oidStr = PageParameterNames.OBJECT_OID.getStringFrom(pageParameters);
+        if(oidStr == null) {
+            return null;
+        }
+        try {
+            final RootOid unmarshal = getOidMarshaller().unmarshal(oidStr, RootOid.class);
+            return unmarshal.enStringNoVersion(getOidMarshaller());
+        } catch(Exception ex) {
+            return null;
+        }
     }
 
     private void addToStart(final String oidStr, final EntityModel entityModel) {
         entityModelByOidStr.put(oidStr, entityModel);
-        titleByEntityModel.put(entityModel, entityModel.getTitle());
         oidStrByEntityModel.put(entityModel, oidStr);
         list.add(0, entityModel);
     }
 
-    private void removeExisting(final String oidStr) {
-        final EntityModel existingModel = entityModelByOidStr.get(oidStr);
-        if(existingModel != null) {
-            remove(oidStr, existingModel);
-        }
-    }
-
     private void trimTo(final int size) {
         if(list.size() <= size) {
             return;
@@ -89,42 +97,61 @@ public class BreadcrumbModel implements Serializable {
         }
     }
 
-    private void remove(final String oidStr, final EntityModel model) {
-        entityModelByOidStr.remove(oidStr);
-        titleByEntityModel.remove(model);
-        oidStrByEntityModel.remove(model);
-        list.remove(model);
+    public String titleFor(final EntityModel model) {
+        return model.getObjectAdapterMemento().getObjectAdapter(AdapterManager.ConcurrencyChecking.NO_CHECK).titleString(null);
     }
 
-    public void remove(String oidStr) {
-        EntityModel removedModel = entityModelByOidStr.remove(oidStr);
-        if(removedModel != null) {
-            remove(removedModel);
+    public EntityModel lookup(final String oidStr) {
+        if(oidStr == null) {
+            return null;
         }
+        return entityModelByOidStr.get(oidStr);
     }
 
-    public void remove(EntityModel entityModel) {
-        String oidStr = oidStrByEntityModel.get(entityModel);
-        if(oidStr != null) {
-            remove(oidStr, entityModel);
+    public void detach() {
+        for (EntityModel entityModel : list) {
+            entityModel.detach();
         }
     }
 
-    public String titleFor(final EntityModel model) {
-        return titleByEntityModel.get(model);
+    public Object getId(final EntityModel choice) {
+        try {
+            final PageParameters pageParameters = choice.getPageParameters();
+            final String oidStr = PageParameterNames.OBJECT_OID.getStringFrom(pageParameters);
+            return RootOid.deString(oidStr, getOidMarshaller());
+        } catch (Exception ex) {
+            remove(choice);
+            return null;
+        }
+
     }
 
-    public EntityModel lookup(String oidStr) {
-        if(oidStr == null) {
-            return null;
+
+    void remove(final String rootOid) {
+        final EntityModel existingModel = entityModelByOidStr.get(rootOid);
+        if(existingModel != null) {
+            remove(rootOid, existingModel);
         }
-        final EntityModel entityModel = entityModelByOidStr.get(oidStr);
-        return entityModel;
     }
 
-    public void detach() {
-        for (EntityModel entityModel : list) {
-            entityModel.detach();
+    public void remove(final EntityModel entityModel) {
+        final String oidStr = oidStrByEntityModel.get(entityModel);
+        if(oidStr != null) {
+            remove(oidStr, entityModel);
         }
     }
+
+    private void remove(final String rootOid, final EntityModel model) {
+        entityModelByOidStr.remove(rootOid);
+        oidStrByEntityModel.remove(model);
+        list.remove(model);
+    }
+
+
+
+    protected OidMarshaller getOidMarshaller() {
+        return IsisContext.getOidMarshaller();
+    }
+
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/c492e358/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
index 84b16c6..50c7367 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
@@ -27,7 +27,6 @@ import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.wicketstuff.select2.Response;
 import org.wicketstuff.select2.Select2Choice;
 import org.wicketstuff.select2.Settings;
@@ -35,7 +34,6 @@ import org.wicketstuff.select2.TextChoiceProvider;
 
 import org.apache.isis.core.commons.authentication.MessageBroker;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.viewer.wicket.model.mementos.PageParameterNames;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.ui.errors.JGrowlUtil;
 import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
@@ -70,14 +68,7 @@ public class BreadcrumbPanel extends PanelAbstract<IModel<Void>> {
 
             @Override
             protected Object getId(EntityModel choice) {
-                try {
-                    final PageParameters pageParameters = choice.getPageParameters();
-                    final String oidStr = PageParameterNames.OBJECT_OID.getStringFrom(pageParameters);
-                    return oidStr;
-                } catch (Exception ex) {
-                    breadcrumbModel.remove(choice);
-                    return null;
-                }
+                return breadcrumbModel.getId(choice);
             }
 
             @Override