fixed bug 460
[org.ibex.core.git] / src / org / ibex / Template.java
index ed91cd3..154de72 100644 (file)
@@ -181,8 +181,8 @@ public class Template {
                         throw new XML.Exn("root element was not <ibex>", XML.Exn.SCHEMA, getLine(), getCol());
                     if (c.getAttrLen() != 0)
                         throw new XML.Exn("root element must not have attributes", XML.Exn.SCHEMA, getLine(), getCol());
-                    if (c.getUri("ui") == null) c.addUri("ui", "ibex://ui");
-                    if (c.getUri("") == null) c.addUri("", initial_uri);
+                    if (c.getUri("ui") == null || "".equals(c.getUri("ui"))) c.addUri("ui", "ibex://ui");
+                    if (c.getUri("") == null || "".equals(c.getUri(""))) c.addUri("", initial_uri);
                     state = STATE_IN_ROOT_NODE;
                     return;
                 case STATE_IN_ROOT_NODE:
@@ -207,15 +207,16 @@ public class Template {
             }
                 
             Hash urimap = c.getUriMap();
-            t.urikeys = new String[urimap.size()];
-            t.urivals = new String[urimap.size()];
+            t.urikeys = new String[urimap.size() - (urimap.get("ui") == null ? 0 : 1)];
+            t.urivals = new String[urimap.size() - (urimap.get("ui") == null ? 0 : 1)];
             Enumeration uriEnumeration = urimap.keys();
             int ii = 0;
             while(uriEnumeration.hasMoreElements()) {
                 String key = (String)uriEnumeration.nextElement();
+                if (key.equals("ui")) continue;
                 String val = (String)urimap.get(key);
                 t.urikeys[ii] = key;
-                if (val.charAt(0) == '.') val = val.substring(1);
+                if (val.length() > 0 && val.charAt(0) == '.') val = val.substring(1);
                 t.urivals[ii] = val;
                 ii++;
             }