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