From 4feb7e2d19dedc4c18e597ff7b8d6fb934b452c4 Mon Sep 17 00:00:00 2001 From: Christian Beikov Date: Mon, 28 Feb 2022 15:13:23 +0100 Subject: [PATCH] Allow access to discovered types and functions in delaractive configuration --- .../DeclarativeDomainConfiguration.java | 15 +++++++++++++++ .../spi/DeclarativeDomainConfigurationImpl.java | 10 ++++++++++ typescript/src/main/typescript/index.ts | 8 ++++---- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/declarative/api/src/main/java/com/blazebit/domain/declarative/DeclarativeDomainConfiguration.java b/declarative/api/src/main/java/com/blazebit/domain/declarative/DeclarativeDomainConfiguration.java index 543ebc9..232ca1f 100644 --- a/declarative/api/src/main/java/com/blazebit/domain/declarative/DeclarativeDomainConfiguration.java +++ b/declarative/api/src/main/java/com/blazebit/domain/declarative/DeclarativeDomainConfiguration.java @@ -29,6 +29,7 @@ import java.lang.annotation.Annotation; import java.util.List; import java.util.Map; +import java.util.Set; /** * @author Christian Beikov @@ -61,6 +62,13 @@ public interface DeclarativeDomainConfiguration extends ServiceProvider { */ DeclarativeDomainConfiguration removeDomainType(Class domainTypeClass); + /** + * Returns the registered domain types. + * + * @return the registered domain types + */ + Set> getDomainTypes(); + /** * Adds the given domain functions java class for later analysis to add its functions as domain function to the domain builder. * @@ -86,6 +94,13 @@ public interface DeclarativeDomainConfiguration extends ServiceProvider { */ DeclarativeDomainConfiguration removeDomainFunctions(Class domainFunctionsClass); + /** + * Returns the registered domain functions. + * + * @return the registered domain functions + */ + Set> getDomainFunctions(); + /** * Returns the type resolver. * diff --git a/declarative/impl/src/main/java/com/blazebit/domain/declarative/impl/spi/DeclarativeDomainConfigurationImpl.java b/declarative/impl/src/main/java/com/blazebit/domain/declarative/impl/spi/DeclarativeDomainConfigurationImpl.java index ea8c26c..12dbcaf 100644 --- a/declarative/impl/src/main/java/com/blazebit/domain/declarative/impl/spi/DeclarativeDomainConfigurationImpl.java +++ b/declarative/impl/src/main/java/com/blazebit/domain/declarative/impl/spi/DeclarativeDomainConfigurationImpl.java @@ -300,6 +300,11 @@ public DeclarativeDomainConfiguration removeDomainFunctions(Class domainFunct return this; } + @Override + public Set> getDomainFunctions() { + return domainFunctions.keySet(); + } + @Override public DeclarativeDomainConfiguration addDomainType(Class domainTypeClass) { domainTypes.put(domainTypeClass, AnnotationUtils.findAnnotation(domainTypeClass, DomainType.class)); @@ -318,6 +323,11 @@ public DeclarativeDomainConfiguration removeDomainType(Class domainTypeClass) return this; } + @Override + public Set> getDomainTypes() { + return domainTypes.keySet(); + } + @Override public Map getProperties() { return properties; diff --git a/typescript/src/main/typescript/index.ts b/typescript/src/main/typescript/index.ts index cd0584c..6b51865 100644 --- a/typescript/src/main/typescript/index.ts +++ b/typescript/src/main/typescript/index.ts @@ -646,8 +646,8 @@ export class DomainModel { } getOperationTypeResolver(typeName: string, operator: DomainOperator): DomainOperationTypeResolver { - let resolvers = this.operationTypeResolvers[typeName][DomainOperator[operator]]; - return resolvers == null ? null : resolvers; + let resolvers = this.operationTypeResolvers[typeName]; + return resolvers == null ? null : resolvers[DomainOperator[operator]]; } getPredicateTypeResolvers(typeName: string): StringMap { @@ -655,8 +655,8 @@ export class DomainModel { } getPredicateTypeResolver(typeName: string, predicate: DomainPredicate): DomainPredicateTypeResolver { - let resolvers = this.predicateTypeResolvers[typeName][DomainPredicate[predicate]]; - return resolvers == null ? null : resolvers; + let resolvers = this.predicateTypeResolvers[typeName]; + return resolvers == null ? null : resolvers[DomainPredicate[predicate]]; } private static getType(typeName: string, types: StringMap, collectionTypes: StringMap): DomainType {