Update of 
/var/cvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement
In directory 
james.mmbase.org:/tmp/cvs-serv3644/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement

Modified Files:
        NavigationCacheEntryFactory.java 
Log Message:
CMSC-1031 Changing an URL in an Alias and publishing it does not resolve to the 
new URL


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement
See also: http://www.mmbase.org/jira/browse/CMSC-1031


Index: NavigationCacheEntryFactory.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/sitemanagement/src/java/com/finalist/cmsc/services/sitemanagement/NavigationCacheEntryFactory.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- NavigationCacheEntryFactory.java    1 Feb 2008 09:37:12 -0000       1.5
+++ NavigationCacheEntryFactory.java    27 Aug 2008 14:56:02 -0000      1.6
@@ -10,20 +10,34 @@
 package com.finalist.cmsc.services.sitemanagement;
 
 import java.io.Serializable;
+import java.util.List;
 
-import org.mmbase.bridge.*;
+import org.mmbase.bridge.Node;
 import org.mmbase.core.event.*;
+import org.mmbase.util.logging.Logger;
+import org.mmbase.util.logging.Logging;
 
 import com.finalist.cmsc.navigation.*;
 
 public class NavigationCacheEntryFactory extends MMBaseCacheEntryFactory {
 
+   /** MMbase logging system */
+   private static final Logger log = 
Logging.getLoggerInstance(NavigationCacheEntryFactory.class);
+
     public NavigationCacheEntryFactory() {
         super(PagesUtil.PAGE);
         for (NavigationItemManager manager : 
NavigationManager.getNavigationManagers()) {
             if (!PagesUtil.isPageType(manager.getTreeManager())) {
                 registerListener(manager.getTreeManager());
             }
+            List<String> relatedTypes = manager.getRelatedTypes();
+            if (relatedTypes != null) {
+               for (String relatedType : relatedTypes) {
+                  if (NavigationManager.getNavigationManager(relatedType) == 
null ) {
+                     registerListener(relatedType);
+                  }
+               }
+            }
         }
     }
 
@@ -31,9 +45,14 @@
     @Override
     protected Serializable loadEntry(Serializable key) throws Exception {
         Node node = getNode(key);
+        if (node == null) {
+           log.debug("NavigationItem not found: " + key);
+           return null;
+       }
+
         NavigationItemManager manager = 
NavigationManager.getNavigationManager(node);
         if (manager != null) {
-            return manager.loadNavigationItem((Integer) key, node);
+            return manager.loadNavigationItem(node);
         }
         return null;
     }
@@ -41,13 +60,10 @@
     @Override
     protected boolean isRelationEvent(RelationEvent event, String nodeType) {
         for (NavigationItemManager manager : 
NavigationManager.getNavigationManagers()) {
-
             if (super.isRelationEvent(event, manager.getTreeManager())) {
                 return true;
             }
-
         }
-
         return false;
     }
 
@@ -57,6 +73,24 @@
         return NavigationManager.getNavigationManager(event.getBuilderName()) 
!= null;
     }
 
+    @Override
+    public void notify(NodeEvent event) {
+      super.notify(event);
+      String eventNodeType = event.getBuilderName();
+
+      if (event.getType() == Event.TYPE_CHANGE) {
+         for (NavigationItemManager manager : 
NavigationManager.getNavigationManagers()) {
+            List<String> relatedTypes = manager.getRelatedTypes();
+            if (relatedTypes != null && relatedTypes.contains(eventNodeType)) {
+               Node node = getCloud().getNode(event.getNodeNumber());
+               Node navItem = manager.findItemForRelatedNode(node);
+               if (navItem != null) {
+                  refreshEntry(navItem.getNumber());
+               }
+            }
+         }
+      }
+    }
 
     @Override
     public void notify(RelationEvent event) {
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to