diff --git a/core/src/main/java/jeeves/config/springutil/JeevesNodeAwareLogoutSuccessHandler.java b/core/src/main/java/jeeves/config/springutil/JeevesNodeAwareLogoutSuccessHandler.java index e1c0aec9692..8442c90959a 100644 --- a/core/src/main/java/jeeves/config/springutil/JeevesNodeAwareLogoutSuccessHandler.java +++ b/core/src/main/java/jeeves/config/springutil/JeevesNodeAwareLogoutSuccessHandler.java @@ -26,11 +26,15 @@ import org.fao.geonet.NodeInfo; import org.fao.geonet.kernel.setting.SettingManager; import org.fao.geonet.kernel.setting.Settings; +import org.fao.geonet.constants.Geonet; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.AbstractAuthenticationTargetUrlRequestHandler; import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; +import org.apache.commons.lang3.StringUtils; +import org.fao.geonet.kernel.setting.SettingInfo; + import java.io.IOException; import java.net.MalformedURLException; @@ -84,8 +88,10 @@ protected String determineTargetUrl(HttpServletRequest request, HttpServletRespo String siteHost = settingManager.getValue(Settings.SYSTEM_SERVER_HOST); String siteProtocol = settingManager.getValue(Settings.SYSTEM_SERVER_PROTOCOL); - int sitePort = settingManager.getValueAsInt(Settings.SYSTEM_SERVER_PORT); - + + // some conditional logic to handle the case where there's no port in the settings + SettingInfo si = new SettingInfo(); + int sitePort = si.getSitePort(); if (!hostName.equalsIgnoreCase(siteHost) || !protocol.equalsIgnoreCase(siteProtocol) || diff --git a/core/src/main/java/org/fao/geonet/kernel/datamanager/base/BaseMetadataManager.java b/core/src/main/java/org/fao/geonet/kernel/datamanager/base/BaseMetadataManager.java index 3f55fd11217..9c0fc317842 100644 --- a/core/src/main/java/org/fao/geonet/kernel/datamanager/base/BaseMetadataManager.java +++ b/core/src/main/java/org/fao/geonet/kernel/datamanager/base/BaseMetadataManager.java @@ -53,6 +53,7 @@ import org.fao.geonet.kernel.search.index.BatchOpsMetadataReindexer; import org.fao.geonet.kernel.setting.SettingManager; import org.fao.geonet.kernel.setting.Settings; +import org.fao.geonet.kernel.setting.SettingInfo; import org.fao.geonet.lib.Lib; import org.fao.geonet.repository.*; import org.fao.geonet.repository.specification.MetadataFileUploadSpecs; @@ -917,12 +918,8 @@ private Element buildInfoElem(ServiceContext context, String id, String version) // add baseUrl of this site (from settings) String protocol = settingManager.getValue(Settings.SYSTEM_SERVER_PROTOCOL); String host = settingManager.getValue(Settings.SYSTEM_SERVER_HOST); - String port = settingManager.getValue(Settings.SYSTEM_SERVER_PORT); - if (port.equals("80")) { - port = ""; - } else { - port = ":" + port; - } + SettingInfo si = new SettingInfo(); + String port = Integer.toString(si.getSitePort()); addElement(info, Edit.Info.Elem.BASEURL, protocol + "://" + host + port + context.getBaseUrl()); addElement(info, Edit.Info.Elem.LOCSERV, "/srv/en"); return info; diff --git a/core/src/main/java/org/fao/geonet/kernel/setting/SettingInfo.java b/core/src/main/java/org/fao/geonet/kernel/setting/SettingInfo.java index cb72fac0a95..ba6ad843d02 100644 --- a/core/src/main/java/org/fao/geonet/kernel/setting/SettingInfo.java +++ b/core/src/main/java/org/fao/geonet/kernel/setting/SettingInfo.java @@ -25,6 +25,7 @@ import org.fao.geonet.ApplicationContextHolder; import org.fao.geonet.constants.Geonet; +import org.apache.commons.lang3.StringUtils; import static org.fao.geonet.kernel.setting.SettingManager.isPortRequired; @@ -68,6 +69,22 @@ public String getSiteUrl() { return sb.toString(); } + /** + * Handle the case where the port in Settings is empty + */ + + public Integer getSitePort() { + SettingManager settingManager = ApplicationContextHolder.get().getBean(SettingManager.class); + + // some conditional logic to handle the case where there's no port in the settings + int sitePort = Geonet.DefaultHttpPort.HTTP; + if (StringUtils.isNumeric(settingManager.getValue(Settings.SYSTEM_SERVER_PORT))) { + sitePort = settingManager.getValueAsInt(Settings.SYSTEM_SERVER_PORT); + } + + return sitePort; + } + //--------------------------------------------------------------------------- private Integer toIntOrNull(String key) {