From 3ce140a05bdaa2d3e04903c8862974f8ed03ae3a Mon Sep 17 00:00:00 2001 From: rjy7 Date: Tue, 15 Feb 2011 15:16:04 +0000 Subject: [PATCH] Merge r7477, r7485-7486 from nihvivo-rel-1.2-maint --- .../freemarker/HomePageController.java | 6 +++- .../controller/freemarker/UrlBuilder.java | 36 ++++++++++--------- .../functions/IndividualProfileUrlMethod.java | 3 +- 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/HomePageController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/HomePageController.java index 44fe58239..ab00cfed6 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/HomePageController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/HomePageController.java @@ -58,7 +58,11 @@ public class HomePageController extends FreemarkerHttpServlet { Portal portal = vreq.getPortal(); int tabId = portal.getRootTabId(); Tab tab = vreq.getWebappDaoFactory().getTabDao().getTab(tabId,0,vreq.getAppBean()); - return tab.getBody(); + String body = tab.getBody(); + if (body == null) { + body = ""; + } + return body; } @Override diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/UrlBuilder.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/UrlBuilder.java index 831dad598..22ca54c3b 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/UrlBuilder.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/UrlBuilder.java @@ -9,6 +9,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.openrdf.model.URI; @@ -19,7 +20,6 @@ import edu.cornell.mannlib.vitro.webapp.beans.IndividualImpl; import edu.cornell.mannlib.vitro.webapp.beans.Portal; import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; import edu.cornell.mannlib.vitro.webapp.filters.PortalPickerFilter; -import edu.cornell.mannlib.vitro.webapp.utils.StringUtils; public class UrlBuilder { @@ -291,24 +291,28 @@ public class UrlBuilder { private static String getIndividualProfileUrl(Individual individual, String individualUri, WebappDaoFactory wadf) { String profileUrl = null; - URI uri = new URIImpl(individualUri); - String namespace = uri.getNamespace(); - String defaultNamespace = wadf.getDefaultNamespace(); - - String localName = individual.getLocalName(); - - if (defaultNamespace.equals(namespace)) { - profileUrl = getUrl(Route.INDIVIDUAL.path() + "/" + localName); - } else { - if (wadf.getApplicationDao().isExternallyLinkedNamespace(namespace)) { - log.debug("Found externally linked namespace " + namespace); - profileUrl = namespace + "/" + localName; + try { + URI uri = new URIImpl(individualUri); // throws exception if individualUri is invalid + String namespace = uri.getNamespace(); + String defaultNamespace = wadf.getDefaultNamespace(); + + String localName = individual.getLocalName(); + + if (defaultNamespace.equals(namespace)) { + profileUrl = getUrl(Route.INDIVIDUAL.path() + "/" + localName); } else { - ParamMap params = new ParamMap("uri", individualUri); - profileUrl = getUrl("/individual", params); + if (wadf.getApplicationDao().isExternallyLinkedNamespace(namespace)) { + log.debug("Found externally linked namespace " + namespace); + profileUrl = namespace + "/" + localName; + } else { + ParamMap params = new ParamMap("uri", individualUri); + profileUrl = getUrl("/individual", params); + } } + } catch (Exception e) { + log.warn(e); + return null; } - return profileUrl; } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/functions/IndividualProfileUrlMethod.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/functions/IndividualProfileUrlMethod.java index d60827fc0..ed3424ea4 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/functions/IndividualProfileUrlMethod.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/functions/IndividualProfileUrlMethod.java @@ -24,7 +24,8 @@ public class IndividualProfileUrlMethod implements TemplateMethodModel { Environment env = Environment.getCurrentEnvironment(); HttpServletRequest request = (HttpServletRequest) env.getCustomAttribute("request"); VitroRequest vreq = new VitroRequest(request); - return UrlBuilder.getIndividualProfileUrl(uri, vreq.getWebappDaoFactory()); + String url = UrlBuilder.getIndividualProfileUrl(uri, vreq.getWebappDaoFactory()); + return (url == null) ? "" : url; // don't return a null to the template } }