Update of
/var/cvs/contributions/CMSContainer_Modules/alias/src/java/com/finalist/cmsc/alias
In directory
james.mmbase.org:/tmp/cvs-serv13627/alias/src/java/com/finalist/cmsc/alias
Modified Files:
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.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- AliasNavigationItemManager.java 21 Jun 2008 12:41:01 -0000 1.7
+++ AliasNavigationItemManager.java 26 Jun 2008 08:19:51 -0000 1.8
@@ -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;
@@ -11,15 +12,10 @@
import com.finalist.cmsc.alias.tree.AliasTreeItemRenderer;
import com.finalist.cmsc.alias.util.AliasUtil;
import com.finalist.cmsc.beans.om.NavigationItem;
-import com.finalist.cmsc.mmbase.ResourcesUtil;
import com.finalist.cmsc.navigation.*;
public class AliasNavigationItemManager implements NavigationItemManager {
- private static final String RELATED = "related";
-
- private static final String DESTINATION = "destination";
-
private static final Logger log =
Logging.getLoggerInstance(AliasNavigationItemManager.class.getName());
private NavigationItemRenderer renderer = new AliasNavigationRenderer();
@@ -44,16 +40,16 @@
}
Alias alias = MMBaseNodeMapper.copyNode(node, Alias.class);
- NodeList relatedPages = node.getRelatedNodes(PagesUtil.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(ResourcesUtil.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.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- AliasNavigationRenderer.java 2 Jun 2008 21:56:26 -0000 1.11
+++ AliasNavigationRenderer.java 26 Jun 2008 08:19:51 -0000 1.12
@@ -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,8 +13,10 @@
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 {
@@ -31,22 +34,26 @@
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);
-
- if (pageItem != null) {
- NavigationItemRenderer manager =
NavigationManager.getRenderer(pageItem);
- if (manager != null) {
- String contentType = manager.getContentType();
- String charset = servletConfig.getInitParameter("charset");
- if (charset != null && charset.length() > 0) {
- contentType += "; charset=" + charset;
+ if (pageItem == null) {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND,
+ "Trying to resolve Alias without related pages id:" +
item.getId());
}
- response.setContentType(contentType);
-
- manager.render(pageItem, aliasRequest, response,
servletConfig);
+ 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 {
+ forwardInternal(request, response, servletConfig, pageItem);
}
}
}
@@ -54,16 +61,11 @@
String url = alias.getUrl();
if (StringUtils.isNotBlank(url)) {
String redirect = response.encodeRedirectURL(url);
- try {
- response.sendRedirect(redirect);
- }
- catch (IOException e) {
- log.debug("" + e.getMessage(), e);
- }
+ redirectToUrl(response, redirect);
}
else {
- throw new IllegalArgumentException(
- "Trying to resolve Alias without related pages
id:"+item.getId());
+ response.sendError(HttpServletResponse.SC_NOT_FOUND,
+ "Trying to resolve Alias without related pages id:" +
item.getId());
}
}
}
@@ -73,22 +75,30 @@
}
}
-
- 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) {
+ String contentType = manager.getContentType();
+ String charset = servletConfig.getInitParameter("charset");
+ if (charset != null && charset.length() > 0) {
+ contentType += "; charset=" + charset;
}
+ response.setContentType(contentType);
+ HttpServletRequest aliasRequest = new
InternalDispatchNavigationRequest(request, pageItem);
+ PortalEnvironment aliasEnv = new PortalEnvironment(aliasRequest,
response);
+ manager.render(pageItem, aliasRequest, response, servletConfig);
+ }
}
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs