SOLR-4221: back compat for router spec

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1526003 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Yonik Seeley 2013-09-24 20:39:54 +00:00
parent b45e8cb708
commit d038299faf
2 changed files with 18 additions and 4 deletions

View File

@ -260,8 +260,18 @@ public class ClusterState implements JSONWriter.Writable {
objs.remove(DocCollection.SHARDS);
}
Map map = (Map) props.get(DocCollection.DOC_ROUTER);
DocRouter router = map == null ? DocRouter.DEFAULT : DocRouter.getDocRouter(map.get("name"));
Object routerObj = props.get(DocCollection.DOC_ROUTER);
DocRouter router;
if (routerObj == null) {
router = DocRouter.DEFAULT;
} else if (routerObj instanceof String) {
// back compat with Solr4.4
router = DocRouter.getDocRouter((String)routerObj);
} else {
Map routerProps = (Map)routerObj;
router = DocRouter.getDocRouter(routerProps.get("name"));
}
return new DocCollection(name, slices, props, router);
}

View File

@ -64,9 +64,13 @@ public abstract class DocRouter {
map.put(s.substring(7), props.get(s));
}
}
if(map.get("name") == null) map.put("name", DEFAULT_NAME);
Object o = props.get("router");
if (o instanceof String) {
map.put("name", o);
} else if (map.get("name") == null) {
map.put("name", DEFAULT_NAME);
}
return map;
}
// currently just an implementation detail...