Skip to content

Commit

Permalink
SOLR-17477: Revert registration of agg parser changes, not needed
Browse files Browse the repository at this point in the history
  • Loading branch information
timatbw committed Nov 1, 2024
1 parent 90a251c commit 0502e60
Showing 1 changed file with 14 additions and 24 deletions.
38 changes: 14 additions & 24 deletions solr/core/src/java/org/apache/solr/search/facet/FacetParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.params.SolrParams;
Expand Down Expand Up @@ -139,30 +138,21 @@ public Object parseFacetOrStat(String key, Object o) throws SyntaxError {
return parseFacetOrStat(key, type, args);
}

public interface ParseHandler {
Object doParse(FacetParser<?> parent, String key, Object args) throws SyntaxError;
}

private static final Map<String, ParseHandler> REGISTERED_TYPES = new ConcurrentHashMap<>();

static {
ParseHandler fieldParser = (p, k, a) -> new FacetFieldParser(p, k).parse(a);
REGISTERED_TYPES.put("field", fieldParser);
REGISTERED_TYPES.put("terms", fieldParser);
REGISTERED_TYPES.put("query", (p, k, a) -> new FacetQueryParser(p, k).parse(a));
REGISTERED_TYPES.put("range", (p, k, a) -> new FacetRangeParser(p, k).parse(a));
REGISTERED_TYPES.put("heatmap", (p, k, a) -> new FacetHeatmap.Parser(p, k).parse(a));
REGISTERED_TYPES.put("func", (p, k, a) -> p.parseStat(k, a));
}

public static void registerParseHandler(String type, ParseHandler parseHandler) {
REGISTERED_TYPES.put(type, parseHandler);
}

public Object parseFacetOrStat(String key, String type, Object args) throws SyntaxError {
ParseHandler parseHandler = REGISTERED_TYPES.get(type);
if (parseHandler != null) {
return parseHandler.doParse(this, key, args);
// TODO: a place to register all these facet types?

switch (type) {
case "field":
case "terms":
return new FacetFieldParser(this, key).parse(args);
case "query":
return new FacetQueryParser(this, key).parse(args);
case "range":
return new FacetRangeParser(this, key).parse(args);
case "heatmap":
return new FacetHeatmap.Parser(this, key).parse(args);
case "func":
return parseStat(key, args);
}

throw err("Unknown facet or stat. key=" + key + " type=" + type + " args=" + args);
Expand Down

0 comments on commit 0502e60

Please sign in to comment.