From 20da396c17006f241b43a60779417a8424e07fd6 Mon Sep 17 00:00:00 2001 From: Mark Wolters Date: Thu, 7 Mar 2024 17:08:17 -0400 Subject: [PATCH] use spi service loader for serdes impl --- .../functions/hdf_to_cql/HdfPredicatesToCql.java | 8 ++++---- .../virtdata/predicates/JsonPredicateSerDes.java | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/hdf_to_cql/HdfPredicatesToCql.java b/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/hdf_to_cql/HdfPredicatesToCql.java index 8b4e223a9..a647d3ba8 100644 --- a/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/hdf_to_cql/HdfPredicatesToCql.java +++ b/adapter-cqld4/src/main/java/io/nosqlbench/datamappers/functions/hdf_to_cql/HdfPredicatesToCql.java @@ -19,17 +19,18 @@ package io.nosqlbench.datamappers.functions.hdf_to_cql; import io.jhdf.HdfFile; import io.jhdf.api.Dataset; +import io.nosqlbench.nb.annotations.ServiceSelector; import io.nosqlbench.nb.api.nbio.NBIO; import io.nosqlbench.virtdata.api.annotations.Categories; import io.nosqlbench.virtdata.api.annotations.Category; import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; -import io.nosqlbench.virtdata.predicates.JsonPredicateSerDes; import io.nosqlbench.virtdata.predicates.ast.PConjunction; import io.nosqlbench.virtdata.predicates.ast.PredicateExpr; import io.nosqlbench.virtdata.predicates.ast.PredicateTerm; import io.nosqlbench.virtdata.predicates.types.PredicateAdapter; import io.nosqlbench.virtdata.predicates.types.PredicateSerDes; +import java.util.ServiceLoader; import java.util.function.LongFunction; import java.util.stream.Collectors; @@ -48,14 +49,13 @@ public class HdfPredicatesToCql implements LongFunction, PredicateAdapte /** * Create a new binding function that accepts a long input value for the cycle and returns a string * @param filename The HDF5 file to read the predicate dataset from - * @param datasetname The name of the dataset internal to the HDRF5 file + * @param datasetname The name of the dataset internal to the HDF5 file */ public HdfPredicatesToCql(String filename, String datasetname) { hdfFile = new HdfFile(NBIO.all().search(filename).one().asPath()); dataset = hdfFile.getDatasetByPath(datasetname); recordCount = dataset.getDimensions()[0]; - //TODO: -- use spi service loader interface for serDes implementation - serDes = new JsonPredicateSerDes(); + serDes = ServiceSelector.of("json-serdes", ServiceLoader.load(PredicateSerDes.class)).getOne(); } @Override diff --git a/virtdata-lib-hdf5/src/main/java/io/nosqlbench/virtdata/predicates/JsonPredicateSerDes.java b/virtdata-lib-hdf5/src/main/java/io/nosqlbench/virtdata/predicates/JsonPredicateSerDes.java index 38511e83f..976beaf04 100644 --- a/virtdata-lib-hdf5/src/main/java/io/nosqlbench/virtdata/predicates/JsonPredicateSerDes.java +++ b/virtdata-lib-hdf5/src/main/java/io/nosqlbench/virtdata/predicates/JsonPredicateSerDes.java @@ -19,10 +19,12 @@ package io.nosqlbench.virtdata.predicates; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; +import io.nosqlbench.nb.annotations.Service; import io.nosqlbench.virtdata.predicates.ast.PredicateExpr; import io.nosqlbench.virtdata.predicates.ast.PredicateExprDefaultImpl; import io.nosqlbench.virtdata.predicates.types.PredicateSerDes; +@Service(value=PredicateSerDes.class,selector = "json-serdes") public class JsonPredicateSerDes implements PredicateSerDes { private final static Gson gson = new GsonBuilder().setPrettyPrinting().create(); private final static TypeToken pexprType = TypeToken.get(PredicateExprDefaultImpl.class);