@@ -1537,53 +1537,6 @@ public List<LibraryInfo> build(Object data) {
1537
1537
}
1538
1538
};
1539
1539
1540
- public static final Builder <Class <?>> JSON_TYPE = new Builder <Class <?>>() {
1541
- @ Override
1542
- public Class <?> build (Object data ) {
1543
- if (data == null ) return null ;
1544
- String str = STRING .build (data );
1545
- switch (str ) {
1546
- case "null" :
1547
- return null ;
1548
- case "boolean" :
1549
- return boolean .class ;
1550
- case "integer" :
1551
- return int .class ;
1552
- case "number" :
1553
- return float .class ;
1554
- case "string" :
1555
- return String .class ;
1556
- case "object" :
1557
- return Object .class ;
1558
- case "array" :
1559
- return List .class ;
1560
- default :
1561
- throw new JedisException ("Unknown type: " + str );
1562
- }
1563
- }
1564
-
1565
- @ Override
1566
- public String toString () {
1567
- return "Class<?>" ;
1568
- }
1569
- };
1570
-
1571
- public static final Builder <List <Class <?>>> JSON_TYPE_LIST = new Builder <List <Class <?>>>() {
1572
- @ Override
1573
- public List <Class <?>> build (Object data ) {
1574
- List <Object > list = (List <Object >) data ;
1575
- List <Class <?>> classes = new ArrayList <>(list .size ());
1576
- for (Object elem : list ) {
1577
- try {
1578
- classes .add (JSON_TYPE .build (elem ));
1579
- } catch (JedisException je ) {
1580
- classes .add (null );
1581
- }
1582
- }
1583
- return classes ;
1584
- }
1585
- };
1586
-
1587
1540
public static final Builder <List <List <String >>> STRING_LIST_LIST = new Builder <List <List <String >>>() {
1588
1541
@ Override
1589
1542
@ SuppressWarnings ("unchecked" )
@@ -1612,209 +1565,6 @@ public String toString() {
1612
1565
}
1613
1566
};
1614
1567
1615
- public static final Builder <AggregationResult > SEARCH_AGGREGATION_RESULT = new Builder <AggregationResult >() {
1616
- @ Override
1617
- public AggregationResult build (Object data ) {
1618
- return new AggregationResult (data );
1619
- }
1620
- };
1621
-
1622
- public static final Builder <AggregationResult > SEARCH_AGGREGATION_RESULT_WITH_CURSOR = new Builder <AggregationResult >() {
1623
- @ Override
1624
- public AggregationResult build (Object data ) {
1625
- List <Object > list = (List <Object >) data ;
1626
- return new AggregationResult (list .get (0 ), (long ) list .get (1 ));
1627
- }
1628
- };
1629
-
1630
- public static final Builder <Map <String , Object >> SEARCH_PROFILE_PROFILE = new Builder <Map <String , Object >>() {
1631
-
1632
- private final String ITERATORS_PROFILE_STR = "Iterators profile" ;
1633
- private final String CHILD_ITERATORS_STR = "Child iterators" ;
1634
- private final String RESULT_PROCESSORS_PROFILE_STR = "Result processors profile" ;
1635
-
1636
- @ Override
1637
- public Map <String , Object > build (Object data ) {
1638
- List <Object > list = (List <Object >) SafeEncoder .encodeObject (data );
1639
- Map <String , Object > profileMap = new HashMap <>(list .size (), 1f );
1640
-
1641
- for (Object listObject : list ) {
1642
- List <Object > attributeList = (List <Object >) listObject ;
1643
- String attributeName = (String ) attributeList .get (0 );
1644
- Object attributeValue ;
1645
-
1646
- if (attributeList .size () == 2 ) {
1647
-
1648
- Object value = attributeList .get (1 );
1649
- if (attributeName .equals (ITERATORS_PROFILE_STR )) {
1650
- attributeValue = parseIterators (value );
1651
- } else if (attributeName .endsWith (" time" )) {
1652
- attributeValue = DoublePrecision .parseFloatingPointNumber ((String ) value );
1653
- } else {
1654
- attributeValue = value ;
1655
- }
1656
-
1657
- } else if (attributeList .size () > 2 ) {
1658
-
1659
- if (attributeName .equals (RESULT_PROCESSORS_PROFILE_STR )) {
1660
- List <Map <String , Object >> resultProcessorsProfileList = new ArrayList <>(attributeList .size () - 1 );
1661
- for (int i = 1 ; i < attributeList .size (); i ++) {
1662
- resultProcessorsProfileList .add (parseResultProcessors (attributeList .get (i )));
1663
- }
1664
- attributeValue = resultProcessorsProfileList ;
1665
- } else {
1666
- attributeValue = attributeList .subList (1 , attributeList .size ());
1667
- }
1668
-
1669
- } else {
1670
- attributeValue = null ;
1671
- }
1672
-
1673
- profileMap .put (attributeName , attributeValue );
1674
- }
1675
- return profileMap ;
1676
- }
1677
-
1678
- private Map <String , Object > parseResultProcessors (Object data ) {
1679
- List <Object > list = (List <Object >) data ;
1680
- Map <String , Object > map = new HashMap <>(list .size () / 2 , 1f );
1681
- for (int i = 0 ; i < list .size (); i += 2 ) {
1682
- String key = (String ) list .get (i );
1683
- Object value = list .get (i + 1 );
1684
- if (key .equals ("Time" )) {
1685
- value = DoublePrecision .parseFloatingPointNumber ((String ) value );
1686
- }
1687
- map .put (key , value );
1688
- }
1689
- return map ;
1690
- }
1691
-
1692
- private Object parseIterators (Object data ) {
1693
- if (!(data instanceof List )) return data ;
1694
- List iteratorsAttributeList = (List ) data ;
1695
- int childIteratorsIndex = iteratorsAttributeList .indexOf (CHILD_ITERATORS_STR );
1696
- // https://github.com/RediSearch/RediSearch/issues/3205 patch. TODO: Undo if resolved in RediSearch.
1697
- if (childIteratorsIndex < 0 ) childIteratorsIndex = iteratorsAttributeList .indexOf ("Child iterator" );
1698
-
1699
- Map <String , Object > iteratorsProfile ;
1700
- if (childIteratorsIndex < 0 ) {
1701
- childIteratorsIndex = iteratorsAttributeList .size ();
1702
- iteratorsProfile = new HashMap <>(childIteratorsIndex / 2 , 1f );
1703
- } else {
1704
- iteratorsProfile = new HashMap <>(1 + childIteratorsIndex / 2 , 1f );
1705
- }
1706
-
1707
- for (int i = 0 ; i < childIteratorsIndex ; i += 2 ) {
1708
- String key = (String ) iteratorsAttributeList .get (i );
1709
- Object value = iteratorsAttributeList .get (i + 1 );
1710
- if (key .equals ("Time" )) {
1711
- value = DoublePrecision .parseFloatingPointNumber ((String ) value );
1712
- }
1713
- iteratorsProfile .put (key , value );
1714
- }
1715
-
1716
- if (childIteratorsIndex + 1 < iteratorsAttributeList .size ()) {
1717
- List childIteratorsList = new ArrayList (iteratorsAttributeList .size () - childIteratorsIndex - 1 );
1718
- for (int i = childIteratorsIndex + 1 ; i < iteratorsAttributeList .size (); i ++) {
1719
- childIteratorsList .add (parseIterators (iteratorsAttributeList .get (i )));
1720
- }
1721
- iteratorsProfile .put (CHILD_ITERATORS_STR , childIteratorsList );
1722
- }
1723
- return iteratorsProfile ;
1724
- }
1725
- };
1726
-
1727
- public static final Builder <Map <String , List <String >>> SEARCH_SYNONYM_GROUPS = new Builder <Map <String , List <String >>>() {
1728
- @ Override
1729
- public Map <String , List <String >> build (Object data ) {
1730
- List <Object > list = (List <Object >) data ;
1731
- Map <String , List <String >> dump = new HashMap <>(list .size () / 2 , 1f );
1732
- for (int i = 0 ; i < list .size (); i += 2 ) {
1733
- dump .put (STRING .build (list .get (i )), STRING_LIST .build (list .get (i + 1 )));
1734
- }
1735
- return dump ;
1736
- }
1737
- };
1738
-
1739
- public static final Builder <Map <String , Map <String , Double >>> SEARCH_SPELLCHECK_RESPONSE
1740
- = new Builder <Map <String , Map <String , Double >>>() {
1741
-
1742
- private final String TERM = "TERM" ;
1743
-
1744
- @ Override
1745
- public Map <String , Map <String , Double >> build (Object data ) {
1746
- List <Object > rawTerms = (List <Object >) data ;
1747
- Map <String , Map <String , Double >> returnTerms = new LinkedHashMap <>(rawTerms .size ());
1748
-
1749
- for (Object rawTerm : rawTerms ) {
1750
- List <Object > rawElements = (List <Object >) rawTerm ;
1751
-
1752
- String header = STRING .build (rawElements .get (0 ));
1753
- if (!TERM .equals (header )) {
1754
- throw new IllegalStateException ("Unrecognized header: " + header );
1755
- }
1756
- String term = STRING .build (rawElements .get (1 ));
1757
-
1758
- List <List <Object >> list = (List <List <Object >>) rawElements .get (2 );
1759
- Map <String , Double > entries = new LinkedHashMap <>(list .size ());
1760
- list .forEach (entry -> entries .put (STRING .build (entry .get (1 )), DOUBLE .build (entry .get (0 ))));
1761
-
1762
- returnTerms .put (term , entries );
1763
- }
1764
- return returnTerms ;
1765
- }
1766
- };
1767
-
1768
- public static final Builder <TSElement > TIMESERIES_ELEMENT = new Builder <TSElement >() {
1769
- @ Override
1770
- public TSElement build (Object data ) {
1771
- List <Object > list = (List <Object >) data ;
1772
- if (list == null || list .isEmpty ()) return null ;
1773
- return new TSElement (LONG .build (list .get (0 )), DOUBLE .build (list .get (1 )));
1774
- }
1775
- };
1776
-
1777
- public static final Builder <List <TSElement >> TIMESERIES_ELEMENT_LIST = new Builder <List <TSElement >>() {
1778
- @ Override
1779
- public List <TSElement > build (Object data ) {
1780
- return ((List <Object >) data ).stream ().map ((pairObject ) -> (List <Object >) pairObject )
1781
- .map ((pairList ) -> new TSElement (LONG .build (pairList .get (0 )),
1782
- DOUBLE .build (pairList .get (1 ))))
1783
- .collect (Collectors .toList ());
1784
- }
1785
- };
1786
-
1787
- public static final Builder <List <TSKeyedElements >> TIMESERIES_MRANGE_RESPONSE = new Builder <List <TSKeyedElements >>() {
1788
- @ Override
1789
- public List <TSKeyedElements > build (Object data ) {
1790
- return ((List <Object >) data ).stream ().map ((tsObject ) -> (List <Object >) tsObject )
1791
- .map ((tsList ) -> new TSKeyedElements (STRING .build (tsList .get (0 )),
1792
- STRING_MAP_FROM_PAIRS .build (tsList .get (1 )),
1793
- TIMESERIES_ELEMENT_LIST .build (tsList .get (2 ))))
1794
- .collect (Collectors .toList ());
1795
- }
1796
- };
1797
-
1798
- public static final Builder <List <TSKeyValue <TSElement >>> TIMESERIES_MGET_RESPONSE
1799
- = new Builder <List <TSKeyValue <TSElement >>>() {
1800
- @ Override
1801
- public List <TSKeyValue <TSElement >> build (Object data ) {
1802
- return ((List <Object >) data ).stream ().map ((tsObject ) -> (List <Object >) tsObject )
1803
- .map ((tsList ) -> new TSKeyValue <>(STRING .build (tsList .get (0 )),
1804
- STRING_MAP_FROM_PAIRS .build (tsList .get (1 )),
1805
- TIMESERIES_ELEMENT .build (tsList .get (2 ))))
1806
- .collect (Collectors .toList ());
1807
- }
1808
- };
1809
-
1810
- public static final Builder <Map .Entry <Long , byte []>> BLOOM_SCANDUMP_RESPONSE = new Builder <Map .Entry <Long , byte []>>() {
1811
- @ Override
1812
- public Map .Entry <Long , byte []> build (Object data ) {
1813
- List <Object > list = (List <Object >) data ;
1814
- return new KeyValue <>(LONG .build (list .get (0 )), BINARY .build (list .get (1 )));
1815
- }
1816
- };
1817
-
1818
1568
/**
1819
1569
* A decorator to implement Set from List. Assume that given List do not contains duplicated
1820
1570
* values. The resulting set displays the same ordering, concurrency, and performance
0 commit comments