Update of
/var/cvs/contributions/CMSContainer_Modules/alias/src/java/com/finalist/cmsc/alias
In directory
james.mmbase.org:/tmp/cvs-serv13490/alias/src/java/com/finalist/cmsc/alias
Modified Files:
Tag: b1_4
AliasNavigationItemManager.java AliasNavigationRenderer.java
Log Message:
CMSC-942 Several issues with the Alias module
See also:
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Modules/alias/src/java/com/finalist/cmsc/alias
See also: http://www.mmbase.org/jira/browse/CMSC-942
Index: AliasNavigationItemManager.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer_Modules/alias/src/java/com/finalist/cmsc/alias/AliasNavigationItemManager.java,v
retrieving revision 1.5
retrieving revision 1.5.2.1
diff -u -b -r1.5 -r1.5.2.1
--- AliasNavigationItemManager.java 1 Feb 2008 16:25:35 -0000 1.5
+++ AliasNavigationItemManager.java 26 Jun 2008 08:19:19 -0000 1.5.2.1
@@ -2,6 +2,7 @@
import net.sf.mmapps.commons.beans.MMBaseNodeMapper;
+import org.apache.commons.lang.StringUtils;
import org.mmbase.bridge.*;
import org.mmbase.util.logging.Logger;
import org.mmbase.util.logging.Logging;
@@ -15,7 +16,7 @@
public class AliasNavigationItemManager implements NavigationItemManager {
- private static Logger log =
Logging.getLoggerInstance(AliasNavigationItemManager.class.getName());
+ private static final Logger log =
Logging.getLoggerInstance(AliasNavigationItemManager.class.getName());
private NavigationItemRenderer renderer = new AliasNavigationRenderer();
private NavigationTreeItemRenderer treeRenderer = new
AliasTreeItemRenderer();
@@ -39,16 +40,16 @@
}
Alias alias = MMBaseNodeMapper.copyNode(node, Alias.class);
- NodeList relatedPages = node.getRelatedNodes("page", "related",
"destination");
- if(relatedPages.size() > 0) {
- Node page = relatedPages.getNode(0);
+
+ Node page = AliasUtil.getPage(node);
+ if (page != null) {
alias.setPage(page.getNumber());
}
-
- NodeList relatedUrls = node.getRelatedNodes("urls", "related",
"destination");
- if(relatedUrls.size() > 0) {
- Node url = relatedUrls.getNode(0);
- alias.setUrl(url.getStringValue("url"));
+ else {
+ String externalUrl = AliasUtil.getUrlStr(node);
+ if (!StringUtils.isAlpha(externalUrl)) {
+ alias.setUrl(externalUrl);
+ }
}
return alias;
Index: AliasNavigationRenderer.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer_Modules/alias/src/java/com/finalist/cmsc/alias/AliasNavigationRenderer.java,v
retrieving revision 1.6.2.1
retrieving revision 1.6.2.2
diff -u -b -r1.6.2.1 -r1.6.2.2
--- AliasNavigationRenderer.java 21 Apr 2008 10:11:20 -0000 1.6.2.1
+++ AliasNavigationRenderer.java 26 Jun 2008 08:19:19 -0000 1.6.2.2
@@ -3,7 +3,8 @@
import java.io.IOException;
import javax.servlet.ServletConfig;
-import javax.servlet.http.*;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.mmbase.util.logging.Logger;
@@ -12,13 +13,15 @@
import com.finalist.cmsc.alias.beans.om.Alias;
import com.finalist.cmsc.beans.om.NavigationItem;
import com.finalist.cmsc.navigation.*;
+import com.finalist.cmsc.portalImpl.InternalDispatchNavigationRequest;
import com.finalist.cmsc.services.sitemanagement.SiteManagement;
import com.finalist.pluto.portalImpl.core.PortalEnvironment;
+import com.finalist.pluto.portalImpl.core.PortalURL;
public class AliasNavigationRenderer implements NavigationItemRenderer {
/** MMbase logging system */
- private static Logger log =
Logging.getLoggerInstance(AliasNavigationRenderer.class.getName());
+ private static final Logger log =
Logging.getLoggerInstance(AliasNavigationRenderer.class.getName());
protected static String CONTENT_TYPE = "text/html";
@@ -29,33 +32,38 @@
Alias alias = (Alias) item;
if (alias.getPage() > 0 ) {
NavigationItem pageItem =
SiteManagement.getNavigationItem(alias.getPage());
- String path = SiteManagement.getPath(pageItem,
!ServerUtil.useServerName());
- HttpServletRequest aliasRequest = new
AliasHttpServletRequest(request, path);
- PortalEnvironment aliasEnv = new PortalEnvironment(aliasRequest,
response, servletConfig);
- response.setContentType(CONTENT_TYPE);
-
- if (pageItem != null) {
- NavigationItemRenderer manager =
NavigationManager.getRenderer(pageItem);
- if (manager != null) {
- manager.render(pageItem, aliasRequest, response,
servletConfig);
+ if (pageItem == null) {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND,
+ "Trying to resolve Alias without related pages id:" +
item.getId());
+ }
+ else {
+ if (ServerUtil.useServerName()) {
+ String currentSite = SiteManagement.getSite(item);
+ String aliasSite = SiteManagement.getSite(pageItem);
+ if (currentSite.equals(aliasSite)) {
+ forwardInternal(request, response, servletConfig,
pageItem);
}
+ else {
+ String link = SiteManagement.getPath(pageItem, false);
+ PortalURL u = new PortalURL(aliasSite, request, link);
+ redirectToUrl(response, u.toString());
}
}
else {
- String url = alias.getUrl();
- if (!StringUtils.isBlank(url)) {
- String redirect = response.encodeRedirectURL(url);
- try {
- response.sendRedirect(redirect);
+ forwardInternal(request, response, servletConfig, pageItem);
}
- catch (IOException e) {
- log.debug("" + e.getMessage(), e);
}
}
else {
- throw new IllegalArgumentException(
- "Trying to resolve Alias without related pages
id:"+item.getId());
+ String url = alias.getUrl();
+ if (StringUtils.isNotBlank(url)) {
+ String redirect = response.encodeRedirectURL(url);
+ redirectToUrl(response, redirect);
+ }
+ else {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND,
+ "Trying to resolve Alias without related pages id:" +
item.getId());
}
}
}
@@ -65,22 +73,25 @@
}
}
-
- class AliasHttpServletRequest extends HttpServletRequestWrapper {
-
- private String pagePath;
-
-
- public AliasHttpServletRequest(HttpServletRequest request, String
pagePath) {
- super(request);
- this.pagePath = pagePath;
+ private void redirectToUrl(HttpServletResponse response, String redirect) {
+ try {
+ response.sendRedirect(redirect);
+ }
+ catch (IOException e) {
+ log.info(e.getMessage(), e);
+ }
}
+ private void forwardInternal(HttpServletRequest request,
HttpServletResponse response,
+ ServletConfig servletConfig, NavigationItem pageItem) throws
IOException {
- @Override
- public String getServletPath() {
- return pagePath;
- }
+ NavigationItemRenderer manager =
NavigationManager.getRenderer(pageItem);
+ if (manager != null) {
+ response.setContentType(CONTENT_TYPE);
+ HttpServletRequest aliasRequest = new
InternalDispatchNavigationRequest(request, pageItem);
+ PortalEnvironment aliasEnv = new PortalEnvironment(aliasRequest,
response, servletConfig);
+ manager.render(pageItem, aliasRequest, response, servletConfig);
+ }
}
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs