Class DataObjectResolver
java.lang.Object
io.github.kaktushose.jdac.message.resolver.DataObjectResolver
- All Implemented Interfaces:
Resolver<DataObject>
Resolver implementation that is capable of resolving JDAs DataObject.
Will traverse the DataObject down to every textual JSON node and will resolve all the fields that were configured
at the constructor.
DataObject object = DataObject.fromJson("""
{
"resolve": "my-key",
"skip": "not resolved"
}
""");
DataObjectResolver objectResolver = new DataObjectResolver(messageResolver, Set.of("resolve"));
object = objectResolver.resolve(object, Locale.ENGLISH, Map.of());
Note that many JDA objects can be directly serialized as and deserialized from a DataObject.
-
Constructor Summary
ConstructorsConstructorDescriptionDataObjectResolver(Resolver<String> resolver, Set<String> fields) Constructs a new DataObjectResolver. -
Method Summary
Modifier and TypeMethodDescriptionintpriority()The priority of this resolver influences the order in which resolver are applied in a resolution pipeline.Resolves aDataObject.
-
Constructor Details
-
DataObjectResolver
-
-
Method Details
-
resolve
public DataObject resolve(DataObject object, Locale locale, Map<String, @Nullable Object> placeholders) Resolves aDataObject.- Specified by:
resolvein interfaceResolver<DataObject>- Parameters:
object- theDataObjectto resolvelocale- theLocaleto use for localizationplaceholders- the placeholders to use if supported by the used StringResolver- Returns:
- the resolved
DataObject
-
priority
public int priority()Description copied from interface:ResolverThe priority of this resolver influences the order in which resolver are applied in a resolution pipeline.
Currently, this only applies to
Resolver<String>, when usingMessageResolver(as JDA-Commands does internally). Generally speaking, resolvers with lower priority run first.If the priority isn't important (e.g. for
ComponentResolver) this should return0.- Specified by:
priorityin interfaceResolver<DataObject>- Returns:
- 0
-