diff --git a/designer-base/src/main/java/com/fr/env/RemoteEnvPane.java b/designer-base/src/main/java/com/fr/env/RemoteEnvPane.java index 0dbc508ad6..4efb81d11c 100644 --- a/designer-base/src/main/java/com/fr/env/RemoteEnvPane.java +++ b/designer-base/src/main/java/com/fr/env/RemoteEnvPane.java @@ -336,7 +336,7 @@ public class RemoteEnvPane extends BasicBeanPane { @Override public RemoteDesignerWorkspaceInfo updateBean() { - String url = removeSpaces(this.remoteWorkspaceURL.getURL()); + String url = removeSpaces(this.remoteWorkspaceURL.getStandardURL()); String username = removeSpaces(this.usernameInput.getText()); String password = new String(this.passwordInput.getPassword()); boolean rememberPwd = this.rememberPwdCheckbox.isSelected(); diff --git a/designer-base/src/main/java/com/fr/env/RemoteWorkspaceURL.java b/designer-base/src/main/java/com/fr/env/RemoteWorkspaceURL.java index 9429b09d49..eff5139b7c 100644 --- a/designer-base/src/main/java/com/fr/env/RemoteWorkspaceURL.java +++ b/designer-base/src/main/java/com/fr/env/RemoteWorkspaceURL.java @@ -1,17 +1,17 @@ package com.fr.env; -import com.fr.log.FineLoggerFactory; import com.fr.stable.AssistUtils; import com.fr.stable.FCloneable; import com.fr.stable.StringUtils; + import java.net.URI; import java.net.URISyntaxException; -import com.fr.third.guava.base.Strings; /** * @author yaohwu */ public class RemoteWorkspaceURL implements FCloneable { + private static final String SLASH = "/"; private static final String IPV6_JUDGE_SYMBOL = "["; private static final String IPV6_JUDGE_SYMBOL2 = "]"; @@ -126,25 +126,41 @@ public class RemoteWorkspaceURL implements FCloneable { this.servlet = servlet != null ? servlet.trim() : StringUtils.EMPTY; } + /** + * 用于UI联动的URL,不一定是标准远程设计URL + * + * @return 原始或生成的URL + */ public String getURL() { if (this.url != null) { return url; } String prefix = isHttps ? HTTPS : HTTP; String portColon = StringUtils.isNotEmpty(port) ? ":" : StringUtils.EMPTY; - String webAppNameSlash = StringUtils.isNotEmpty(web) ? "/" : StringUtils.EMPTY; - String servletNameSlash = "/"; - this.url = prefix + host + portColon + port + webAppNameSlash + web + servletNameSlash; + String webAppNameSlash = StringUtils.isNotEmpty(web) ? SLASH : StringUtils.EMPTY; + this.url = prefix + host + portColon + port + webAppNameSlash + web + SLASH + servlet; return this.url; } + /** + * 获取用于远程连接的可用URL + * + * @return 远程连接的可用URL + */ + public String getStandardURL() { + String prefix = isHttps ? HTTPS : HTTP; + String portColon = StringUtils.isNotEmpty(port) ? ":" : StringUtils.EMPTY; + String webAppNameSlash = StringUtils.isNotEmpty(web) ? SLASH : StringUtils.EMPTY; + return prefix + host + portColon + port + webAppNameSlash + web + SLASH; + } + /** * IPV6地址格式不同,处理字符串的方式不同,需要处理的是port和host * 形如 http://[XXXX::XXXX:XXXX:XXXX:XXXX]:8080/webroot/decision */ public void refreshIPV6Format() { String url = this.url; - if (Strings.isNullOrEmpty(url)) { + if (StringUtils.isEmpty(url)) { return; } if (!url.contains(IPV6_JUDGE_SYMBOL) || !url.contains(IPV6_JUDGE_SYMBOL2)) { diff --git a/designer-base/src/test/java/com/fr/env/RemoteWorkspaceURLTest.java b/designer-base/src/test/java/com/fr/env/RemoteWorkspaceURLTest.java index b9412a93d5..beea265b5d 100644 --- a/designer-base/src/test/java/com/fr/env/RemoteWorkspaceURLTest.java +++ b/designer-base/src/test/java/com/fr/env/RemoteWorkspaceURLTest.java @@ -243,6 +243,24 @@ public class RemoteWorkspaceURLTest { //others begin } + @Test + public void testStandardURL(){ + assertEquals("https://www.baidu.com/web/", + new RemoteWorkspaceURL("https://www.baidu.com/web//dfsaf/fdsafds").getStandardURL()); + + assertEquals("https://www.baidu.com/中文·o((⊙﹏⊙))o囖/", + new RemoteWorkspaceURL("https://www.baidu.com/中文·o((⊙﹏⊙))o囖//dfsaf/fdsafds").getStandardURL()); + + assertEquals("https://www.baidu.com/web/", + new RemoteWorkspaceURL("https://www.baidu.com/web").getStandardURL()); + + assertEquals("https://www.baidu.com/web/", + new RemoteWorkspaceURL("https://www.baidu.com/web//").getStandardURL()); + + assertEquals("https://www.baidu.com/web/", + new RemoteWorkspaceURL("https://www.baidu.com/web/servlet").getStandardURL()); + } + @Test public void testIPV6Url() { String trueUrl = "http://[fe80::4d83:cc10:9f6f:3303]:8080/webroot/decision";