Java tutorial
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.solr.client.solrj.response; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.solr.common.cloud.Aliases; import org.apache.solr.common.util.NamedList; public class CollectionAdminResponse extends SolrResponseBase { @SuppressWarnings("unchecked") public NamedList<NamedList<Object>> getCollectionStatus() { return (NamedList<NamedList<Object>>) getResponse().get("success"); } public boolean isSuccess() { return getResponse().get("success") != null; } public String getWarning() { return (String) getResponse().get("warning"); } // this messages are typically from individual nodes, since // all the failures at the router are propagated as exceptions @SuppressWarnings("unchecked") public NamedList<String> getErrorMessages() { return (NamedList<String>) getResponse().get("failure"); } @SuppressWarnings("unchecked") public Map<String, NamedList<Integer>> getCollectionCoresStatus() { Map<String, NamedList<Integer>> res = new HashMap<>(); NamedList<NamedList<Object>> cols = getCollectionStatus(); if (cols != null) { for (Map.Entry<String, NamedList<Object>> e : cols) { NamedList<Object> item = e.getValue(); String core = (String) item.get("core"); if (core != null) { res.put(core, (NamedList<Integer>) item.get("responseHeader")); } } } return res; } @SuppressWarnings("unchecked") public Map<String, String> getAliases() { NamedList<Object> response = getResponse(); if (response.get("aliases") != null) { return ((Map<String, String>) response.get("aliases")); } return Collections.emptyMap(); } public Map<String, List<String>> getAliasesAsLists() { // TODO we compute on each call... should this be done once & cached? return Aliases.convertMapOfCommaDelimitedToMapOfList(getAliases()); } public Map<String, Map<String, String>> getAliasProperties() { NamedList<Object> response = getResponse(); if (response.get("properties") != null) { return ((Map<String, Map<String, String>>) response.get("properties")); } return Collections.emptyMap(); } @SuppressWarnings("unchecked") public Map<String, NamedList<Integer>> getCollectionNodesStatus() { Map<String, NamedList<Integer>> res = new HashMap<>(); NamedList<NamedList<Object>> cols = getCollectionStatus(); if (cols != null) { for (Map.Entry<String, NamedList<Object>> e : cols) { if (e.getKey() != null) { res.put(e.getKey(), (NamedList<Integer>) (e.getValue().get("responseHeader"))); } } } return res; } }