summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/domain-node
diff options
context:
space:
mode:
Diffstat (limited to 'java/sca/modules/domain-node')
-rw-r--r--java/sca/modules/domain-node/src/main/java/org/apache/tuscany/sca/node/DomainNode.java17
-rw-r--r--java/sca/modules/domain-node/src/test/java/org/apache/tuscany/sca/node/ConfigTestCase.java21
2 files changed, 37 insertions, 1 deletions
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"));
+ }
}