Package org.apache.solr.common.util

## Class Utils

- java.lang.Object
- - org.apache.solr.common.util.Utils

    public class Utils
    extends Object

### Nested Class Summary

Nested Classes
`static class` `Utils.BAOS`
`static class` `Utils.DelegateReflectWriter`
`static interface` `Utils.InputStreamConsumer<T>`

### Field Summary

Fields
`static Pattern` `ARRAY_ELEMENT_INDEX`
`static String` `CATCH_ALL_PROPERTIES_METHOD_NAME`
`static Utils.InputStreamConsumer<?>` `JAVABINCONSUMER`
`static Utils.InputStreamConsumer<?>` `JSONCONSUMER`
`static Function<org.noggit.JSONParser,​org.noggit.ObjectBuilder>` `MAPOBJBUILDER`
`static Function<org.noggit.JSONParser,​org.noggit.ObjectBuilder>` `MAPWRITEROBJBUILDER`
`static Function<Object,​String>` `OBJECT_TO_STRING` Util function to convert `Object` to `String` Specially handles `Date` to string conversion
`static Random` `RANDOM`
`static Function<org.noggit.JSONParser,​org.noggit.ObjectBuilder>` `STANDARDOBJBUILDER`

### Constructor Summary

Constructors
`Utils()`

### Method Summary

All Methods Static Methods Concrete Methods
`static String` `applyUrlScheme​(String url, String urlScheme)` Given a URL string with or without a scheme, return a new URL with the correct scheme applied.
`static void` `consumeFully​(org.apache.http.HttpEntity entity)` If the passed entity has content, make sure it is fully read and closed.
`static Map<String,​Object>` `convertToMap​(MapWriter m, Map<String,​Object> map)`
`static <T> T` `executeGET​(org.apache.http.client.HttpClient client, String url, Utils.InputStreamConsumer<T> consumer)`
`static <T> T` `executeHttpMethod​(org.apache.http.client.HttpClient client, String url, Utils.InputStreamConsumer<T> consumer, org.apache.http.client.methods.HttpRequestBase httpMethod)`
`static void` `forEachMapEntry​(Object o, String path, BiConsumer fun)`
`static void` `forEachMapEntry​(Object o, BiConsumer fun)`
`static void` `forEachMapEntry​(Object o, List<String> path, BiConsumer fun)`
`static Object` `fromJavabin​(byte[] bytes)`
`static Object` `fromJSON​(byte[] utf8)`
`static Object` `fromJSON​(byte[] utf8, int offset, int length)`
`static Object` `fromJSON​(byte[] utf8, int offset, int length, Function<org.noggit.JSONParser,​org.noggit.ObjectBuilder> fun)`
`static Object` `fromJSON​(InputStream is)`
`static Object` `fromJSON​(InputStream is, Function<org.noggit.JSONParser,​org.noggit.ObjectBuilder> objBuilderProvider)`
`static Object` `fromJSON​(Reader is)`
`static Object` `fromJSONResource​(ClassLoader loader, String resourceName)`
`static Object` `fromJSONString​(String json)`
`static String` `getBaseUrlForNodeName​(String nodeName, String urlScheme)` Construct a V1 base url for the Solr node, given its name (e.g., 'app-node-1:8983_solr') and a URL scheme.
`static String` `getBaseUrlForNodeName​(String nodeName, String urlScheme, boolean isV2)` Construct a V1 or a V2 base url for the Solr node, given its name (e.g., 'app-node-1:8983_solr') and a URL scheme.
`static Collection<?>` `getDeepCopy​(Collection<?> c, int maxDepth, boolean mutable)`
`static Collection<?>` `getDeepCopy​(Collection<?> c, int maxDepth, boolean mutable, boolean sorted)`
`static Map` `getDeepCopy​(Map<?,​?> map, int maxDepth)`
`static Map` `getDeepCopy​(Map<?,​?> map, int maxDepth, boolean mutable)`
`static Map` `getDeepCopy​(Map<?,​?> map, int maxDepth, boolean mutable, boolean sorted)`
`static org.noggit.JSONParser` `getJSONParser​(Reader reader)`
`static Object` `getObjectByPath​(Object root, boolean onlyPrimitive, String hierarchy)`
`static Object` `getObjectByPath​(Object root, boolean onlyPrimitive, List<String> hierarchy)`
`static Object` `getReflectWriter​(Object o)` Return a writable object that will be serialized using the reflection-friendly properties of the class, notably the fields that have the `JsonProperty` annotation.
`static SpecProvider` `getSpec​(String name)`
`static <T> T` `handleExp​(org.slf4j.Logger logger, T def, Callable<T> c)`
`static Map<String,​Object>` `makeMap​(Object... keyVals)`
`static Map<String,​String>` `makeMap​(String... keyVals)`
`static <V> Map<String,​V>` `makeMap​(String k1, V v1, String k2, V v2)`
`static boolean` `mergeJson​(Map<String,​Object> sink, Map<String,​Object> input)` Applies one json over other.
`static Utils.InputStreamConsumer<ByteBuffer>` `newBytesConsumer​(int maxSize)`
`static String` `parseMetricsReplicaName​(String collectionName, String coreName)`
`static void` `readFully​(InputStream is)` Make sure the InputStream is fully read.
`static Map<String,​Object>` `reflectToMap​(Object toReflect)` Produce a Map representation of the provided object using reflection to identify annotated fields.
`static void` `reflectWrite​(MapWriter.EntryWriter ew, Object o)` Convert the input object to a map, writing only those fields annotated with a `JsonProperty` annotation
`static void` `reflectWrite​(MapWriter.EntryWriter ew, Object o, Predicate<Field> fieldFilterer, Class<? extends Annotation> catchAllAnnotation, Function<Field,​String> fieldNamer)` Convert an input object to a map, writing only those fields that match a provided `Predicate`
`static boolean` `setObjectByPath​(Object root, String hierarchy, Object value)`
`static boolean` `setObjectByPath​(Object root, List<String> hierarchy, Object value)`
`static long` `time​(TimeSource timeSource, TimeUnit unit)`
`static long` `timeElapsed​(TimeSource timeSource, long start, TimeUnit unit)`
`static ByteBuffer` `toByteArray​(InputStream is)`
`static ByteBuffer` `toByteArray​(InputStream is, long maxSize)` Reads an input stream into a byte array
`static InputStream` `toJavabin​(Object o)`
`static byte[]` `toJSON​(Object o)`
`static byte[]` `toJSON​(Object o, int indentSize)`
`static String` `toJSONString​(Object o)`
`static String` `toJSONString​(Object o, int indentSize)`
`static byte[]` `toUTF8​(org.noggit.CharArr out)`
`static void` `writeJson​(Object o, OutputStream os, boolean indent)`
`static Writer` `writeJson​(Object o, Writer writer, boolean indent)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### RANDOM

    public static final Random RANDOM

#### STANDARDOBJBUILDER

    public static final Function<org.noggit.JSONParser,​org.noggit.ObjectBuilder> STANDARDOBJBUILDER

#### MAPWRITEROBJBUILDER

    public static final Function<org.noggit.JSONParser,​org.noggit.ObjectBuilder> MAPWRITEROBJBUILDER

#### MAPOBJBUILDER

    public static final Function<org.noggit.JSONParser,​org.noggit.ObjectBuilder> MAPOBJBUILDER

#### OBJECT_TO_STRING

    public static final Function<Object,​String> OBJECT_TO_STRING

Util function to convert `Object` to `String` Specially handles `Date` to string conversion

#### ARRAY_ELEMENT_INDEX

    public static final Pattern ARRAY_ELEMENT_INDEX

#### JAVABINCONSUMER

    public static final Utils.InputStreamConsumer<?> JAVABINCONSUMER

#### JSONCONSUMER

    public static final Utils.InputStreamConsumer<?> JSONCONSUMER

#### CATCH_ALL_PROPERTIES_METHOD_NAME

    public static final String CATCH_ALL_PROPERTIES_METHOD_NAME

See Also:
  Constant Field Values

### Constructor Detail

#### Utils

    public Utils()

### Method Detail

#### getDeepCopy

    public static Map getDeepCopy​(Map<?,​?> map,
                                  int maxDepth)

#### getDeepCopy

    public static Map getDeepCopy​(Map<?,​?> map,
                                  int maxDepth,
                                  boolean mutable)

#### getDeepCopy

    public static Map getDeepCopy​(Map<?,​?> map,
                                  int maxDepth,
                                  boolean mutable,
                                  boolean sorted)

#### forEachMapEntry

    public static void forEachMapEntry​(Object o,
                                       String path,
                                       BiConsumer fun)

#### forEachMapEntry

    public static void forEachMapEntry​(Object o,
                                       List<String> path,
                                       BiConsumer fun)

#### forEachMapEntry

    public static void forEachMapEntry​(Object o,
                                       BiConsumer fun)

#### toJavabin

    public static InputStream toJavabin​(Object o)
                                 throws IOException

Throws:
  `IOException`

#### fromJavabin

    public static Object fromJavabin​(byte[] bytes)
                              throws IOException

Throws:
  `IOException`

#### getDeepCopy

    public static Collection<?> getDeepCopy​(Collection<?> c,
                                            int maxDepth,
                                            boolean mutable)

#### getDeepCopy

    public static Collection<?> getDeepCopy​(Collection<?> c,
                                            int maxDepth,
                                            boolean mutable,
                                            boolean sorted)

#### writeJson

    public static void writeJson​(Object o,
                                 OutputStream os,
                                 boolean indent)
                          throws IOException

Throws:
  `IOException`

#### writeJson

    public static Writer writeJson​(Object o,
                                   Writer writer,
                                   boolean indent)
                            throws IOException

Throws:
  `IOException`

#### toJSON

    public static byte[] toJSON​(Object o)

#### toJSON

    public static byte[] toJSON​(Object o,
                                int indentSize)

Parameters:
  `indentSize` - The number of space characters to use as an indent. 0=newlines but no spaces, -1=no indent at all.

#### toJSONString

    public static String toJSONString​(Object o,
                                      int indentSize)

Parameters:
  `indentSize` - The number of space characters to use as an indent. 0=newlines but no spaces, -1=no indent at all.

#### toJSONString

    public static String toJSONString​(Object o)

#### toUTF8

    public static byte[] toUTF8​(org.noggit.CharArr out)

#### fromJSON

    public static Object fromJSON​(byte[] utf8)

#### fromJSON

    public static Object fromJSON​(byte[] utf8,
                                  int offset,
                                  int length)

#### fromJSON

    public static Object fromJSON​(byte[] utf8,
                                  int offset,
                                  int length,
                                  Function<org.noggit.JSONParser,​org.noggit.ObjectBuilder> fun)

#### makeMap

    public static <V> Map<String,​V> makeMap​(String k1,
                                                  V v1,
                                                  String k2,
                                                  V v2)

#### makeMap

    public static Map<String,​Object> makeMap​(Object... keyVals)

#### makeMap

    public static Map<String,​String> makeMap​(String... keyVals)

#### fromJSON

    public static Object fromJSON​(InputStream is)

#### fromJSON

    public static Object fromJSON​(Reader is)

#### fromJSON

    public static Object fromJSON​(InputStream is,
                                  Function<org.noggit.JSONParser,​org.noggit.ObjectBuilder> objBuilderProvider)

#### fromJSONResource

    public static Object fromJSONResource​(ClassLoader loader,
                                          String resourceName)

#### getJSONParser

    public static org.noggit.JSONParser getJSONParser​(Reader reader)

#### fromJSONString

    public static Object fromJSONString​(String json)

#### getObjectByPath

    public static Object getObjectByPath​(Object root,
                                         boolean onlyPrimitive,
                                         String hierarchy)

#### setObjectByPath

    public static boolean setObjectByPath​(Object root,
                                          String hierarchy,
                                          Object value)

#### setObjectByPath

    public static boolean setObjectByPath​(Object root,
                                          List<String> hierarchy,
                                          Object value)

#### getObjectByPath

    public static Object getObjectByPath​(Object root,
                                         boolean onlyPrimitive,
                                         List<String> hierarchy)

#### consumeFully

    public static void consumeFully​(org.apache.http.HttpEntity entity)

If the passed entity has content, make sure it is fully read and closed.

Parameters:
  `entity` - to consume or null

#### readFully

    public static void readFully​(InputStream is)
                          throws IOException

Make sure the InputStream is fully read.

Parameters:
  `is` - to read
Throws:
  `IOException` - on problem with IO

#### getSpec

    public static SpecProvider getSpec​(String name)

#### parseMetricsReplicaName

    public static String parseMetricsReplicaName​(String collectionName,
                                                 String coreName)

#### mergeJson

    public static boolean mergeJson​(Map<String,​Object> sink,
                                    Map<String,​Object> input)

Applies one json over other. The 'input' is applied over the sink The values in input isapplied over the values in 'sink' . If a value is 'null' that value is removed from sink

Parameters:
  `sink` - the original json object to start with. Ensure that this Map is mutable
  `input` - the json with new values
Returns:
  whether there was any change made to sink or not.

#### applyUrlScheme

    public static String applyUrlScheme​(String url,
                                        String urlScheme)

Given a URL string with or without a scheme, return a new URL with the correct scheme applied.

Parameters:
  `url` - A URL to change the scheme (http|https)
Returns:
  A new URL with the correct scheme

#### getBaseUrlForNodeName

    public static String getBaseUrlForNodeName​(String nodeName,
                                               String urlScheme)

Construct a V1 base url for the Solr node, given its name (e.g., 'app-node-1:8983_solr') and a URL scheme.

Parameters:
  `nodeName` - name of the Solr node
  `urlScheme` - scheme for the base url ('http' or 'https')
Returns:
  url that looks like `https://app-node-1:8983/solr`
Throws:
  `IllegalArgumentException` - if the provided node name is malformed

#### getBaseUrlForNodeName

    public static String getBaseUrlForNodeName​(String nodeName,
                                               String urlScheme,
                                               boolean isV2)

Construct a V1 or a V2 base url for the Solr node, given its name (e.g., 'app-node-1:8983_solr') and a URL scheme.

Parameters:
  `nodeName` - name of the Solr node
  `urlScheme` - scheme for the base url ('http' or 'https')
  `isV2` - whether a V2 url should be constructed
Returns:
  url that looks like `https://app-node-1:8983/api` (V2) or `https://app-node-1:8983/solr` (V1)
Throws:
  `IllegalArgumentException` - if the provided node name is malformed

#### time

    public static long time​(TimeSource timeSource,
                            TimeUnit unit)

#### timeElapsed

    public static long timeElapsed​(TimeSource timeSource,
                                   long start,
                                   TimeUnit unit)

#### handleExp

    public static <T> T handleExp​(org.slf4j.Logger logger,
                                  T def,
                                  Callable<T> c)

#### newBytesConsumer

    public static Utils.InputStreamConsumer<ByteBuffer> newBytesConsumer​(int maxSize)

#### executeGET

    public static <T> T executeGET​(org.apache.http.client.HttpClient client,
                                   String url,
                                   Utils.InputStreamConsumer<T> consumer)
                            throws SolrException

Throws:
  `SolrException`

#### executeHttpMethod

    public static <T> T executeHttpMethod​(org.apache.http.client.HttpClient client,
                                          String url,
                                          Utils.InputStreamConsumer<T> consumer,
                                          org.apache.http.client.methods.HttpRequestBase httpMethod)

#### reflectWrite

    public static void reflectWrite​(MapWriter.EntryWriter ew,
                                    Object o)

Convert the input object to a map, writing only those fields annotated with a `JsonProperty` annotation

Parameters:
  `ew` - an `MapWriter.EntryWriter` to do the actual map insertion/writing
  `o` - the object to be converted

#### getReflectWriter

    public static Object getReflectWriter​(Object o)

Return a writable object that will be serialized using the reflection-friendly properties of the class, notably the fields that have the `JsonProperty` annotation.

If the class has no reflection-friendly fields, then it will be serialized as a string, using the class's name and `toString()` method.

Parameters:
  `o` - the object to get a serializable version of
Returns:
  a serializable version of the object

#### reflectWrite

    public static void reflectWrite​(MapWriter.EntryWriter ew,
                                    Object o,
                                    Predicate<Field> fieldFilterer,
                                    Class<? extends Annotation> catchAllAnnotation,
                                    Function<Field,​String> fieldNamer)

Convert an input object to a map, writing only those fields that match a provided `Predicate`

Parameters:
  `ew` - an `MapWriter.EntryWriter` to do the actual map insertion/writing
  `o` - the object to be converted
  `fieldFilterer` - a predicate used to identify which fields of the object to write
  `catchAllAnnotation` - the annotation used to identify a method that can return a Map of "catch-all" properties. Method is expected to be named "unknownProperties"
  `fieldNamer` - a callback that allows changing field names

#### reflectToMap

    public static Map<String,​Object> reflectToMap​(Object toReflect)

Produce a Map representation of the provided object using reflection to identify annotated fields.

The provided object is not required to be a `MapWriter`.

#### convertToMap

    public static Map<String,​Object> convertToMap​(MapWriter m,
                                                        Map<String,​Object> map)

#### toByteArray

    public static ByteBuffer toByteArray​(InputStream is)
                                  throws IOException

Throws:
  `IOException`

#### toByteArray

    public static ByteBuffer toByteArray​(InputStream is,
                                         long maxSize)
                                  throws IOException

Reads an input stream into a byte array

Parameters:
  `is` - the input stream
Returns:
  the byte array
Throws:
  `IOException` - If there is a low-level I/O error.