[portal-commits] JBoss Portal SVN: r5919 - in trunk: common/src/main/org/jboss/portal/common/util core/src/main/org/jboss/portal/core/impl/model/portal

portal-commits at lists.jboss.org portal-commits at lists.jboss.org
Wed Dec 20 19:03:51 EST 2006


Author: julien at jboss.com
Date: 2006-12-20 19:03:45 -0500 (Wed, 20 Dec 2006)
New Revision: 5919

Modified:
   trunk/common/src/main/org/jboss/portal/common/util/Tools.java
   trunk/core/src/main/org/jboss/portal/core/impl/model/portal/WindowImpl.java
Log:
destroy related window customization on a setInstanceRef if needed

Modified: trunk/common/src/main/org/jboss/portal/common/util/Tools.java
===================================================================
--- trunk/common/src/main/org/jboss/portal/common/util/Tools.java	2006-12-20 23:45:01 UTC (rev 5918)
+++ trunk/common/src/main/org/jboss/portal/common/util/Tools.java	2006-12-21 00:03:45 UTC (rev 5919)
@@ -984,4 +984,16 @@
       copy[array.length] = o;
       return copy;
    }
+
+   public static boolean safeEquals(Object o1, Object o2)
+   {
+      if (o1 == null)
+      {
+         return o2 == null;
+      }
+      else
+      {
+         return o1.equals(o2);
+      }
+   }
 }
\ No newline at end of file

Modified: trunk/core/src/main/org/jboss/portal/core/impl/model/portal/WindowImpl.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/impl/model/portal/WindowImpl.java	2006-12-20 23:45:01 UTC (rev 5918)
+++ trunk/core/src/main/org/jboss/portal/core/impl/model/portal/WindowImpl.java	2006-12-21 00:03:45 UTC (rev 5919)
@@ -26,6 +26,7 @@
 import org.jboss.portal.core.model.portal.Window;
 import org.jboss.portal.core.model.instance.InstanceContainer;
 import org.jboss.portal.core.model.instance.Instance;
+import org.jboss.portal.common.util.Tools;
 
 import java.util.HashMap;
 
@@ -47,6 +48,8 @@
    public WindowImpl(boolean hibernate)
    {
       super(hibernate);
+
+      //
       this.instanceRef = null;
    }
 
@@ -57,6 +60,10 @@
 
    public void setInstanceRef(String instanceRef)
    {
+      if (Tools.safeEquals(this.instanceRef, instanceRef) == false)
+      {
+         destroyRelatedCustomization();
+      }
       this.instanceRef = instanceRef;
    }
 
@@ -75,20 +82,29 @@
 
    protected void destroy()
    {
-      // Destroy the associated customization
-      //
-      AbstractPortalObjectContainer container = (AbstractPortalObjectContainer)getObjectNode().getContext().getContainer();
-      InstanceContainer instanceContainer = container.getInstanceContainer();
-      Instance instance = instanceContainer.getDefinition(instanceRef);
+      destroyRelatedCustomization();
+   }
 
-      //
-      if (instance != null)
+   /**
+    * Destroy the associated customization if it is necessary/possible.
+    */
+   private void destroyRelatedCustomization()
+   {
+      if (instanceRef != null)
       {
-         // That's how we manufacture dash board keys
-         String customizationId = getId().toString();
+         AbstractPortalObjectContainer container = (AbstractPortalObjectContainer)getObjectNode().getContext().getContainer();
+         InstanceContainer instanceContainer = container.getInstanceContainer();
+         Instance instance = instanceContainer.getDefinition(instanceRef);
 
-         // Destroy related instance customization
-         instance.destroyCustomization(customizationId);
+         //
+         if (instance != null)
+         {
+            // That's how we manufacture dash board keys
+            String customizationId = getId().toString();
+
+            // Destroy related instance customization
+            instance.destroyCustomization(customizationId);
+         }
       }
    }
 }




More information about the portal-commits mailing list