org.hypergraphdb.peer
Class Structs

java.lang.Object
  extended by org.hypergraphdb.peer.Structs

public class Structs
extends java.lang.Object

Utility methods to be used in constructing nested structures for complex message representations. This class consists entirely of static methods and is designed to be imported with import org.hypergraphdb.peer.Structs.*.

Author:
Borislav Iordanov

Nested Class Summary
static class Structs.HandleMapper
           
static class Structs.PipeAdvStructsMapper
           
static interface Structs.StructsMapper
           
static class Structs.UUIDStructsMapper
           
 
Constructor Summary
Structs()
           
 
Method Summary
static void addMapper(java.lang.Class<?> clazz, Structs.StructsMapper mapper, java.lang.String name)
          Adds a StructsMapper for a specific class.
 java.util.List<java.lang.Object> append(java.util.List<java.lang.Object> l1, java.util.List<java.lang.Object> l2)
           
static Message combine(Message msg, java.util.Map<java.lang.String,java.lang.Object> s)
           
static
<T> T
combine(T o1, T o2)
           Merge the second argument into the first and return the latter.
static HGAtomPredicate getHGAtomPredicate(java.lang.Object value, java.lang.Object... args)
           
static HGQueryCondition getHGQueryCondition(java.lang.Object value, java.lang.Object... args)
           
static
<T> T
getOptPart(java.lang.Object source, T defaultValue, java.lang.Object... args)
           
static
<T> T
getPart(java.lang.Object source, java.lang.Object... args)
          Gets a part of the struct.
static java.util.Map<java.lang.String,java.lang.Object> getStruct(java.lang.Object source, java.lang.Object... args)
           
static boolean hasPart(java.lang.Object source, java.lang.Object... args)
           
static java.util.List<java.lang.Object> hgPredicate(HGAtomPredicate predicate)
           
static java.util.List<java.lang.Object> hgQuery(HGQueryCondition condition)
           
static java.util.List<java.lang.Object> hgQueryOrPredicate(java.lang.Object x)
           
static java.util.List<java.lang.Object> list(java.lang.Object... args)
          Create a Java list out of a list of arguments.
static void loadListValues(java.util.List<java.lang.Object> destination, java.util.List<java.lang.Object> source)
           
static void loadMapValues(java.lang.Object bean, java.util.Map<java.lang.String,java.lang.Object> properties)
           
static java.util.Map<java.lang.String,java.lang.Object> merge(java.util.Map<java.lang.String,java.lang.Object> m1, java.util.Map<java.lang.String,java.lang.Object> m2)
           
static java.lang.Object object(java.lang.Object value)
          Creates an object that will be serialized via the custom mechanism.
static java.util.Map<java.lang.String,java.lang.Object> struct(java.lang.Object... args)
          Create a record-like structure of name value pairs as a regular Java Map.
static java.util.Map<java.lang.String,java.lang.Object> struct(java.lang.Object bean)
          Use reflection to create a map of the bean properties of the argument.
static java.lang.Object svalue(java.lang.Object x)
          Return primitives, lists and maps as-is, transform collections to lists and beans to structs (i.e.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Structs

public Structs()
Method Detail

svalue

public static java.lang.Object svalue(java.lang.Object x)

Return primitives, lists and maps as-is, transform collections to lists and beans to structs (i.e. String->Value maps). Special case: instances of either HGQueryCondition or HGAtomPredicate or passed to hgQueryOrPredicate to create an appropriate representation.


struct

public static java.util.Map<java.lang.String,java.lang.Object> struct(java.lang.Object bean)

Use reflection to create a map of the bean properties of the argument.


struct

public static java.util.Map<java.lang.String,java.lang.Object> struct(java.lang.Object... args)

Create a record-like structure of name value pairs as a regular Java Map. The method takes a variable number of arguments where each argument at an even position must be a name with the argument following it its value.

For example: struct("personName", "Adriano Celentano", "age", 245).


list

public static java.util.List<java.lang.Object> list(java.lang.Object... args)

Create a Java list out of a list of arguments.


object

public static java.lang.Object object(java.lang.Object value)
Creates an object that will be serialized via the custom mechanism.

Parameters:
value -
Returns:

addMapper

public static void addMapper(java.lang.Class<?> clazz,
                             Structs.StructsMapper mapper,
                             java.lang.String name)
Adds a StructsMapper for a specific class. Mappers are capable of creating a struct from an object of the given class.

Parameters:
clazz -
mapper -
name -

getHGQueryCondition

public static HGQueryCondition getHGQueryCondition(java.lang.Object value,
                                                   java.lang.Object... args)

getHGAtomPredicate

public static HGAtomPredicate getHGAtomPredicate(java.lang.Object value,
                                                 java.lang.Object... args)

getPart

public static <T> T getPart(java.lang.Object source,
                            java.lang.Object... args)
Gets a part of the struct. The path to the element to be retrieved is given as a sequence of objects (int for lists, strings for maps). If at the end of the path we have a representation of a bean we recreate the bean, if not we just return the object.

Parameters:
source -
args -
Returns:

getStruct

public static java.util.Map<java.lang.String,java.lang.Object> getStruct(java.lang.Object source,
                                                                         java.lang.Object... args)

hasPart

public static boolean hasPart(java.lang.Object source,
                              java.lang.Object... args)

getOptPart

public static <T> T getOptPart(java.lang.Object source,
                               T defaultValue,
                               java.lang.Object... args)

loadListValues

public static void loadListValues(java.util.List<java.lang.Object> destination,
                                  java.util.List<java.lang.Object> source)

loadMapValues

public static void loadMapValues(java.lang.Object bean,
                                 java.util.Map<java.lang.String,java.lang.Object> properties)

hgQueryOrPredicate

public static java.util.List<java.lang.Object> hgQueryOrPredicate(java.lang.Object x)

hgQuery

public static java.util.List<java.lang.Object> hgQuery(HGQueryCondition condition)

hgPredicate

public static java.util.List<java.lang.Object> hgPredicate(HGAtomPredicate predicate)

merge

public static java.util.Map<java.lang.String,java.lang.Object> merge(java.util.Map<java.lang.String,java.lang.Object> m1,
                                                                     java.util.Map<java.lang.String,java.lang.Object> m2)

append

public java.util.List<java.lang.Object> append(java.util.List<java.lang.Object> l1,
                                               java.util.List<java.lang.Object> l2)

combine

public static Message combine(Message msg,
                              java.util.Map<java.lang.String,java.lang.Object> s)

combine

public static <T> T combine(T o1,
                            T o2)

Merge the second argument into the first and return the latter. If the arguments are both maps or both lists, all entries from the second are stored in the first. Otherwise, nothing is done.

Parameters:
o1 - The target of the merge.
o2 - The source of the merge.
Returns:
The possibly modified o1.