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 Modifier and Type Class Description static interface
Utils.InputStreamConsumer<T>
-
Field Summary
Fields Modifier and Type Field Description 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
static Function<org.noggit.JSONParser,org.noggit.ObjectBuilder>
STANDARDOBJBUILDER
-
Constructor Summary
Constructors Constructor Description Utils()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description 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)
static String
getBaseUrlForNodeName(String nodeName, String urlScheme, boolean isV2)
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 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 void
reflectWrite(MapWriter.EntryWriter ew, Object o)
Convert the input object to a map, writing only those fields annotated with aJsonProperty
annotationstatic 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 providedPredicate
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 InputStream
toJavabin(Object o)
static byte[]
toJSON(Object o)
static String
toJSONString(Object o)
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)
-
-
-
Field Detail
-
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
-
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
-
-
Method Detail
-
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)
-
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)
-
fromJSON
public static Object fromJSON(InputStream 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)
-
getObjectByPath
public static Object getObjectByPath(Object root, boolean onlyPrimitive, String hierarchy)
-
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 mutableinput
- 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)
-
getBaseUrlForNodeName
public static String getBaseUrlForNodeName(String nodeName, String urlScheme, boolean isV2)
-
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 aJsonProperty
annotation- Parameters:
ew
- anMapWriter.EntryWriter
to do the actual map insertion/writingo
- the object to be converted
-
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 providedPredicate
- Parameters:
ew
- anMapWriter.EntryWriter
to do the actual map insertion/writingo
- the object to be convertedfieldFilterer
- a predicate used to identify which fields of the object to writecatchAllAnnotation
- 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
-
-