Class NamedList<T>

    • Field Detail

    • Constructor Detail

      • NamedList

        public NamedList()
        Creates an empty instance
      • NamedList

        public NamedList​(int sz)
      • NamedList

        public NamedList​(Map.Entry<String,​? extends T>[] nameValuePairs)
        Creates a NamedList instance containing the "name,value" pairs contained in the Entry[].

        Modifying the contents of the Entry[] after calling this constructor may change the NamedList (in future versions of Solr), but this is not guaranteed and should not be relied upon. To modify the NamedList, refer to add(String, Object) or remove(String).

        Parameters:
        nameValuePairs - the name value pairs
      • NamedList

        public NamedList​(Map<String,​? extends T> nameValueMap)
        Creates a NamedList instance containing the "name,value" pairs contained in the Map.

        Modifying the contents of the Map after calling this constructor may change the NamedList (in future versions of Solr), but this is not guaranteed and should not be relied upon. To modify the NamedList, refer to add(String, Object) or remove(String).

        Parameters:
        nameValueMap - the name value pairs
    • Method Detail

      • size

        public int size()
        The total number of name/value pairs
        Specified by:
        size in interface SimpleMap<T>
      • getName

        public String getName​(int idx)
        The name of the pair at the specified List index
        Returns:
        null if no name exists
      • getVal

        public T getVal​(int idx)
        The value of the pair at the specified List index
        Returns:
        may be null
      • add

        public void add​(String name,
                        T val)
        Adds a name/value pair to the end of the list.
      • setName

        public void setName​(int idx,
                            String name)
        Modifies the name of the pair at the specified index.
      • setVal

        public T setVal​(int idx,
                        T val)
        Modifies the value of the pair at the specified index.
        Returns:
        the value that used to be at index
      • remove

        public T remove​(int idx)
        Removes the name/value pair at the specified index.
        Returns:
        the value at the index removed
      • indexOf

        public int indexOf​(String name,
                           int start)
        Scans the list sequentially beginning at the specified index and returns the index of the first pair with the specified name.
        Parameters:
        name - name to look for, may be null
        start - index to begin searching from
        Returns:
        The index of the first matching pair, -1 if no match
      • get

        public T get​(String name)
        Gets the value for the first instance of the specified name found.

        NOTE: this runs in linear time (it scans starting at the beginning of the list until it finds the first pair with the specified name).

        Specified by:
        get in interface SimpleMap<T>
        Returns:
        null if not found or if the value stored was null.
        See Also:
        indexOf(java.lang.String, int), get(String,int)
      • get

        public T get​(String name,
                     int start)
        Gets the value for the first instance of the specified name found starting at the specified index.

        NOTE: this runs in linear time (it scans starting at the specified position until it finds the first pair with the specified name).

        Returns:
        null if not found or if the value stored was null.
        See Also:
        indexOf(java.lang.String, int)
      • getAll

        public List<T> getAll​(String name)
        Gets the values for the specified name
        Parameters:
        name - Name
        Returns:
        List of values
      • findRecursive

        public Object findRecursive​(String... args)
        Recursively parses the NamedList structure to arrive at a specific element. As you descend the NamedList tree, the last element can be any type, including NamedList, but the previous elements MUST be NamedList objects themselves. A null value is returned if the indicated hierarchy doesn't exist, but NamedList allows null values so that could be the actual value at the end of the path.

        This method is particularly useful for parsing the response from Solr's /admin/mbeans handler, but it also works for any complex structure.

        Explicitly casting the return value is recommended. An even safer option is to accept the return value as an object and then check its type.

        Usage examples:

        String coreName = (String) response.findRecursive ("solr-mbeans", "CORE", "core", "stats", "coreName"); long numDoc = (long) response.findRecursive ("solr-mbeans", "CORE", "searcher", "stats", "numDocs");

        Parameters:
        args - One or more strings specifying the tree to navigate.
        Returns:
        the last entry in the given path hierarchy, null if not found.
      • getImmutableCopy

        public NamedList<T> getImmutableCopy()
      • asShallowMap

        public Map<String,​T> asShallowMap()
      • asShallowMap

        public Map<String,​T> asShallowMap​(boolean allowDps)
      • asMap

        public Map asMap​(int maxDepth)
      • toSolrParams

        public SolrParams toSolrParams()
        Create SolrParams from NamedList. Values must be String[] or List (with toString()-appropriate entries), or otherwise have a toString()-appropriate value. Nulls are retained as such in arrays/lists but otherwise will NPE.
      • addAll

        public boolean addAll​(Map<String,​T> args)
        Iterates over the Map and sequentially adds its key/value pairs
      • addAll

        public boolean addAll​(NamedList<? extends T> nl)
        Appends the elements of the given NamedList to this one.
      • clone

        public NamedList<T> clone()
        Makes a shallow copy of the named list.
        Overrides:
        clone in class Object
      • remove

        public T remove​(String name)
        NOTE: this runs in linear time (it scans starting at the beginning of the list until it finds the first pair with the specified name).
      • removeAll

        public List<T> removeAll​(String name)
        Removes and returns all values for the specified name. Returns null if no matches found. This method will return all matching objects, regardless of data type. If you are parsing Solr config options, the removeConfigArgs(String) or removeBooleanArg(String) methods will probably work better.
        Parameters:
        name - Name
        Returns:
        List of values
      • removeBooleanArg

        public Boolean removeBooleanArg​(String name)
        Used for getting a boolean argument from a NamedList object. If the name is not present, returns null. If there is more than one value with that name, or if the value found is not a Boolean or a String, throws an exception. If there is only one value present and it is a Boolean or a String, the value is removed and returned as a Boolean. If an exception is thrown, the NamedList is not modified. See removeAll(String) and removeConfigArgs(String) for additional ways of gathering configuration information from a NamedList.
        Parameters:
        name - The key to look up in the NamedList.
        Returns:
        The boolean value found.
        Throws:
        SolrException - If multiple values are found for the name or the value found is not a Boolean or a String.
      • getBooleanArg

        public Boolean getBooleanArg​(String name)
        Used for getting a boolean argument from a NamedList object. If the name is not present, returns null. If there is more than one value with that name, or if the value found is not a Boolean or a String, throws an exception. If there is only one value present and it is a Boolean or a String, the value is returned as a Boolean. The NamedList is not modified. See remove(String), removeAll(String) and removeConfigArgs(String) for additional ways of gathering configuration information from a NamedList.
        Parameters:
        name - The key to look up in the NamedList.
        Returns:
        The boolean value found.
        Throws:
        SolrException - If multiple values are found for the name or the value found is not a Boolean or a String.
      • removeConfigArgs

        public Collection<String> removeConfigArgs​(String name)
                                            throws SolrException
        Used for getting one or many arguments from NamedList objects that hold configuration parameters. Finds all entries in the NamedList that match the given name. If they are all strings or arrays of strings, remove them from the NamedList and return the individual elements as a Collection. Parameter order will be preserved if the returned collection is handled as an ArrayList. Throws SolrException if any of the values associated with the name are not strings or arrays of strings. If exception is thrown, the NamedList is not modified. Returns an empty collection if no matches found. If you need to remove and retrieve all matching items from the NamedList regardless of data type, use removeAll(String) instead. The removeBooleanArg(String) method can be used for retrieving a boolean argument.
        Parameters:
        name - The key to look up in the NamedList.
        Returns:
        A collection of the values found.
        Throws:
        SolrException - If values are found for the input key that are not strings or arrays of strings.
      • clear

        public void clear()
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • abortableForEach

        public void abortableForEach​(BiFunction<String,​? super T,​Boolean> fun)
        Description copied from interface: SimpleMap
        Navigate through all key-values but abort in between if required. The default impl is suboptimal. Proper implementations must do it more efficiently
        Specified by:
        abortableForEach in interface SimpleMap<T>
        Parameters:
        fun - Consume each entry and return a boolean to signal whether to proceed or not. If true, continue, if false stop
      • abortableForEachKey

        public void abortableForEachKey​(Function<String,​Boolean> fun)
        Description copied from interface: SimpleMap
        iterate through all keys but abort in between if required The default impl is suboptimal. Proper implementations must do it more efficiently
        Specified by:
        abortableForEachKey in interface SimpleMap<T>
        Parameters:
        fun - Consume each key and return a boolean to signal whether to proceed or not. If true, continue. If false stop
      • forEachKey

        public void forEachKey​(Consumer<String> fun)
        Description copied from interface: SimpleMap
        iterate through all keys The default impl is suboptimal. Proper implementations must do it more efficiently
        Specified by:
        forEachKey in interface SimpleMap<T>