private Map<String, Map<String, ServiceBean>> buildServiceVersionHierarchy( ServiceBean[] serviceBeans) { Map<String, Map<String, ServiceBean>> hierarchy = new LinkedHashMap<String, Map<String, ServiceBean>>(); if (serviceBeans == null) { return hierarchy; } for (ServiceBean serviceBean : serviceBeans) { if (serviceBean != null) { String path = RegistryUtils.getParentPath(serviceBean.getPath()); String version = RegistryUtils.getResourceName(path); if (!version.replace("-SNAPSHOT", "").matches("^\\d+[.]\\d+[.]\\d+$")) { version = "SNAPSHOT"; serviceBean.setPath(serviceBean.getPath()); } else { serviceBean.setPath(RegistryUtils.getParentPath(path)); } Map<String, ServiceBean> versionMap; if (hierarchy.containsKey(serviceBean.getQName())) { versionMap = hierarchy.get(serviceBean.getQName()); } else { versionMap = new LinkedHashMap<String, ServiceBean>(); hierarchy.put(serviceBean.getQName(), versionMap); } versionMap.put(version, serviceBean); } } return hierarchy; }