Author: julien(a)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);
+ }
}
}
}
Show replies by date