You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by mg...@apache.org on 2015/03/24 12:23:21 UTC

isis git commit: IsisISIS-1111 Trying to load an entity with wrong/non-existing OID fails with NullPointerException

Repository: isis
Updated Branches:
  refs/heads/master 4a00684e5 -> 737c0a2c5


IsisISIS-1111 Trying to load an entity with wrong/non-existing OID fails with NullPointerException


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

Branch: refs/heads/master
Commit: 737c0a2c58c90b288f21f7d3c7f34f0a28ad1947
Parents: 4a00684
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Mar 24 13:22:57 2015 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Mar 24 13:22:57 2015 +0200

----------------------------------------------------------------------
 .../viewer/wicket/model/models/EntityModel.java |  2 +-
 .../wicket/ui/pages/entity/EntityPage.java      | 22 ++++++++++++++++++--
 2 files changed, 21 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/737c0a2c/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java b/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
index 2b88467..85107cf 100644
--- a/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
+++ b/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
@@ -162,7 +162,7 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> {
         this.pendingModel = new PendingModel(this);
     }
 
-    private static String oidStr(final PageParameters pageParameters) {
+    public static String oidStr(final PageParameters pageParameters) {
         return PageParameterNames.OBJECT_OID.getStringFrom(pageParameters);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/737c0a2c/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
index cfd0d7d..83c5872 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/entity/EntityPage.java
@@ -20,10 +20,13 @@
 package org.apache.isis.viewer.wicket.ui.pages.entity;
 
 import java.util.List;
+import org.apache.wicket.Application;
+import org.apache.wicket.RestartResponseException;
 import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
 import org.apache.wicket.event.Broadcast;
 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.string.Strings;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -64,9 +67,24 @@ public class EntityPage extends PageAbstract {
      * {@link BookmarkablePageLink bookmarkable} links.
      */
     public EntityPage(final PageParameters pageParameters) {
-        this(pageParameters, new EntityModel(pageParameters));
+        this(pageParameters, createEntityModel(pageParameters));
     }
-    
+
+    /**
+     * Creates an EntityModel from the given page parameters.
+     * Redirects to the application home page if there is no OID in the parameters.
+     *
+     * @param parameters The page parameters with the OID
+     * @return An EntityModel for the requested OID
+     */
+    private static EntityModel createEntityModel(final PageParameters parameters) {
+        String oid = EntityModel.oidStr(parameters);
+        if (Strings.isEmpty(oid)) {
+            throw new RestartResponseException(Application.get().getHomePage());
+        }
+        return new EntityModel(parameters);
+    }
+
     private EntityPage(final PageParameters pageParameters, final EntityModel entityModel) {
         this(pageParameters, entityModel, null);
     }