Author: taylor
Date: Wed Oct 11 16:39:33 2006
New Revision: 463069

URL: http://svn.apache.org/viewvc?view=rev&rev=463069
Log:
http://issues.apache.org/jira/browse/JS2-571

patch applied, unit tests pass

Modified:
    
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/impl/DatabasePageManager.java

Modified: 
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/impl/DatabasePageManager.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/impl/DatabasePageManager.java?view=diff&rev=463069&r1=463068&r2=463069
==============================================================================
--- 
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/impl/DatabasePageManager.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/impl/DatabasePageManager.java
 Wed Oct 11 16:39:33 2006
@@ -940,7 +940,8 @@
             page = (Page)ProxyHelper.getRealObject(page);
 
             // look up and set parent folder if necessary
-            if (page.getParent() == null)
+            FolderImpl parent = (FolderImpl)page.getParent();
+            if (parent == null)
             {
                 // access folder by path
                 String pagePath = page.getPath();
@@ -949,7 +950,6 @@
                 {
                     parentPath = Folder.PATH_SEPARATOR;
                 }
-                FolderImpl parent = null;
                 try
                 {
                     parent = (FolderImpl)getFolder(parentPath);                
    
@@ -969,7 +969,10 @@
                 DatabasePageManagerCache.addTransaction(new 
TransactionedOperation(page.getPath(), TransactionedOperation.ADD_OPERATION));
 
                 // reset parent folder pages cache
-                parent.resetPages(false);
+                if (parent != null)
+                {
+                    parent.resetPages(false);
+                }
 
                 // notify page manager listeners
                 delegator.notifyNewNode(page);
@@ -983,6 +986,15 @@
                 getPersistenceBrokerTemplate().store(page);
                 DatabasePageManagerCache.addTransaction(new 
TransactionedOperation(page.getPath(), 
TransactionedOperation.UPDATE_OPERATION));
                 
+                // reset parent folder pages cache in case
+                // parent is holding an out of date copy of
+                // this page that was removed from the cache
+                // before this one was accessed
+                if (parent != null)
+                {
+                    parent.resetPages(false);
+                }
+
                 // notify page manager listeners
                 delegator.notifyUpdatedNode(page);
             }
@@ -1027,7 +1039,10 @@
                 getPersistenceBrokerTemplate().delete(page);
                 
                 // reset parent folder pages cache
-                parent.resetPages(false);
+                if (parent != null)
+                {
+                    parent.resetPages(false);
+                }
             }
             else
             {
@@ -1068,7 +1083,8 @@
             folder = (Folder)ProxyHelper.getRealObject(folder);
 
             // look up and set parent folder if required
-            if ((folder.getParent() == null) && 
!folder.getPath().equals(Folder.PATH_SEPARATOR))
+            FolderImpl parent = (FolderImpl)folder.getParent();
+            if ((parent == null) && 
!folder.getPath().equals(Folder.PATH_SEPARATOR))
             {
                 // access folder by path
                 String folderPath = folder.getPath();
@@ -1077,7 +1093,6 @@
                 {
                     parentPath = Folder.PATH_SEPARATOR;
                 }
-                FolderImpl parent = null;
                 try
                 {
                     parent = (FolderImpl)getFolder(parentPath);
@@ -1097,7 +1112,10 @@
                 DatabasePageManagerCache.addTransaction(new 
TransactionedOperation(folder.getPath(), TransactionedOperation.ADD_OPERATION));
 
                 // reset parent folder folders cache
-                parent.resetFolders(false);
+                if (parent != null)
+                {
+                    parent.resetFolders(false);
+                }
 
                 // notify page manager listeners
                 delegator.notifyNewNode(folder);
@@ -1126,6 +1144,15 @@
                     DatabasePageManagerCache.addTransaction(new 
TransactionedOperation(folder.getPath(), 
TransactionedOperation.UPDATE_OPERATION));
                 }
 
+                // reset parent folder folders cache in case
+                // parent is holding an out of date copy of
+                // this folder that was removed from the cache
+                // before this one was accessed
+                if (parent != null)
+                {
+                    parent.resetFolders(false);
+                }
+
                 // notify page manager listeners
                 if (newFolder && !folder.getId().equals("0"))
                 {
@@ -1258,7 +1285,10 @@
                 getPersistenceBrokerTemplate().delete(folder);
 
                 // reset parent folder folders cache
-                parent.resetPages(false);
+                if (parent != null)
+                {
+                    parent.resetFolders(false);
+                }
             }
             else
             {
@@ -1362,7 +1392,8 @@
             link = (Link)ProxyHelper.getRealObject(link);
 
             // look up and set parent folder if necessary
-            if (link.getParent() == null)
+            FolderImpl parent = (FolderImpl)link.getParent();
+            if (parent == null)
             {
                 // access folder by path
                 String linkPath = link.getPath();
@@ -1371,7 +1402,6 @@
                 {
                     parentPath = Folder.PATH_SEPARATOR;
                 }
-                FolderImpl parent = null;
                 try
                 {
                     parent = (FolderImpl)getFolder(parentPath);
@@ -1391,7 +1421,10 @@
                 DatabasePageManagerCache.addTransaction(new 
TransactionedOperation(link.getPath(), TransactionedOperation.ADD_OPERATION));
 
                 // reset parent folder links cache
-                parent.resetLinks(false);
+                if (parent != null)
+                {
+                    parent.resetLinks(false);
+                }
 
                 // notify page manager listeners
                 delegator.notifyNewNode(link);
@@ -1405,6 +1438,15 @@
                 getPersistenceBrokerTemplate().store(link);
                 DatabasePageManagerCache.addTransaction(new 
TransactionedOperation(link.getPath(), 
TransactionedOperation.UPDATE_OPERATION));
 
+                // reset parent folder links cache in case
+                // parent is holding an out of date copy of
+                // this link that was removed from the cache
+                // before this one was accessed
+                if (parent != null)
+                {
+                    parent.resetLinks(false);
+                }
+
                 // notify page manager listeners
                 delegator.notifyUpdatedNode(link);
             }
@@ -1445,7 +1487,10 @@
                 getPersistenceBrokerTemplate().delete(link);
 
                 // reset parent folder links cache
-                parent.resetLinks(false);
+                if (parent != null)
+                {                
+                    parent.resetLinks(false);
+                }
             }
             else
             {
@@ -1477,7 +1522,8 @@
             pageSecurity = 
(PageSecurity)ProxyHelper.getRealObject(pageSecurity);
 
             // look up and set parent folder if necessary
-            if (pageSecurity.getParent() == null)
+            FolderImpl parent = (FolderImpl)pageSecurity.getParent();
+            if (parent == null)
             {
                 // access folder by path
                 String pageSecurityPath = pageSecurity.getPath();
@@ -1486,7 +1532,6 @@
                 {
                     parentPath = Folder.PATH_SEPARATOR;
                 }
-                FolderImpl parent = null;
                 try
                 {
                     parent = (FolderImpl)getFolder(parentPath);
@@ -1514,7 +1559,10 @@
                     DatabasePageManagerCache.addTransaction(new 
TransactionedOperation(pageSecurity.getPath(), 
TransactionedOperation.ADD_OPERATION));
 
                     // reset parent folder page security cache
-                    parent.resetPageSecurity((PageSecurityImpl)pageSecurity, 
true);
+                    if (parent != null)
+                    {                    
+                        
parent.resetPageSecurity((PageSecurityImpl)pageSecurity, true);
+                    }
                 }
                 catch (Exception e)
                 {
@@ -1533,6 +1581,15 @@
                 getPersistenceBrokerTemplate().store(pageSecurity);
                 DatabasePageManagerCache.addTransaction(new 
TransactionedOperation(pageSecurity.getPath(), 
TransactionedOperation.UPDATE_OPERATION));
 
+                // reset parent folder page security cache in case
+                // parent is holding an out of date copy of this
+                // page security that was removed from the cache
+                // before this one was accessed
+                if (parent != null)
+                {                
+                    parent.resetPageSecurity((PageSecurityImpl)pageSecurity, 
true);
+                }
+
                 // notify page manager listeners
                 delegator.notifyUpdatedNode(pageSecurity);
             }
@@ -1576,7 +1633,10 @@
                 getPersistenceBrokerTemplate().delete(pageSecurity);
 
                 // reset parent folder page security cache
-                parent.resetPageSecurity(null, true);
+                if (parent != null)
+                {                
+                    parent.resetPageSecurity(null, true);
+                }
             }
             else
             {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to