diff --git a/java/sca/modules/domain-node/src/main/java/org/apache/tuscany/sca/node/DomainNode.java b/java/sca/modules/domain-node/src/main/java/org/apache/tuscany/sca/node/DomainNode.java index 91f4ff17d1..39f60c4a1d 100644 --- a/java/sca/modules/domain-node/src/main/java/org/apache/tuscany/sca/node/DomainNode.java +++ b/java/sca/modules/domain-node/src/main/java/org/apache/tuscany/sca/node/DomainNode.java @@ -115,7 +115,7 @@ public class DomainNode { } protected void parseConfigURI(String configURI) { - URI uri = URI.create(configURI); + URI uri = URI.create(fixScheme(configURI)); String dn = uri.getHost(); if (dn == null || dn.length() < 1) { dn = DEFAULT_DOMAIN_NAME; @@ -136,4 +136,19 @@ public class DomainNode { } } } + + /** + * I keep typing the scheme part with just a colon instead of colon slash slash + * which URI doesn't parse properly which irritates me so fix it up here + */ + private String fixScheme(String uri) { + int i = uri.indexOf(":"); + if (i > -1 && uri.charAt(i+1) != '/') { + uri = uri.replaceFirst(":", ":/"); + } + if (i > -1 && uri.charAt(i+2) != '/') { + uri = uri.replaceFirst(":/", "://"); + } + return uri; + } } diff --git a/java/sca/modules/domain-node/src/test/java/org/apache/tuscany/sca/node/ConfigTestCase.java b/java/sca/modules/domain-node/src/test/java/org/apache/tuscany/sca/node/ConfigTestCase.java index 6327ae06b2..4ca8f180bb 100644 --- a/java/sca/modules/domain-node/src/test/java/org/apache/tuscany/sca/node/ConfigTestCase.java +++ b/java/sca/modules/domain-node/src/test/java/org/apache/tuscany/sca/node/ConfigTestCase.java @@ -39,4 +39,25 @@ public class ConfigTestCase{ assertEquals("y", domain.getConfigAttributes().getAttributes().get("p2")); } + @Test + public void testConfig1() throws Exception { + DomainNode domain = new DomainNode("foo:someDomain:1234?p1=x&p2=y"); + assertEquals(4, domain.getConfigAttributes().getAttributes().size()); + assertEquals("someDomain", domain.getDomainName()); + assertEquals("foo", domain.getConfigAttributes().getAttributes().get("domainScheme")); + assertEquals("someDomain", domain.getConfigAttributes().getAttributes().get("domainName")); + assertEquals("x", domain.getConfigAttributes().getAttributes().get("p1")); + assertEquals("y", domain.getConfigAttributes().getAttributes().get("p2")); + } + + @Test + public void testConfig2() throws Exception { + DomainNode domain = new DomainNode("foo:/someDomain:1234?p1=x&p2=y"); + assertEquals(4, domain.getConfigAttributes().getAttributes().size()); + assertEquals("someDomain", domain.getDomainName()); + assertEquals("foo", domain.getConfigAttributes().getAttributes().get("domainScheme")); + assertEquals("someDomain", domain.getConfigAttributes().getAttributes().get("domainName")); + assertEquals("x", domain.getConfigAttributes().getAttributes().get("p1")); + assertEquals("y", domain.getConfigAttributes().getAttributes().get("p2")); + } }