mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-02 17:19:37 +00:00
Changed the dimension handling of the SimpleFunctionRegistry
This commit is contained in:
1 parent
009a19708c
commit
b3ac8b2caf
4 files changed
+49
-34
No files matched your search
+4
-4
@@ -33,8 +33,8 @@ public class TestSimpleFunctionRegistryRegistrations {
|
||||
Set<Function<?>> expectedRegisteredFunctionsAsSet = new HashSet<>();
|
||||
expectedRegisteredFunctionsAsSet.add(FunctionFactory.createMethodWrappingFunction(dimension));
|
||||
Iterable<Function<?>> expectedRegisteredFunctions = expectedRegisteredFunctionsAsSet;
|
||||
assertThat(registry.getAllRegisteredFunctions(), is(expectedRegisteredFunctions));
|
||||
assertThat(registry.getRegisteredFunctionsOf(SimpleClassWithMarkedMethods.class), is(expectedRegisteredFunctions));
|
||||
assertThat(registry.getAllFunctions(), is(expectedRegisteredFunctions));
|
||||
assertThat(registry.getFunctionsOf(SimpleClassWithMarkedMethods.class), is(expectedRegisteredFunctions));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -46,7 +46,7 @@ public class TestSimpleFunctionRegistryRegistrations {
|
||||
expectedRegisteredFunctionsAsSet.addAll(FunctionTestsUtil.getMarkedMethodsOfSimpleClassWithMarkedMethod());
|
||||
expectedRegisteredFunctionsAsSet.addAll(FunctionTestsUtil.getMethodsOfExternalLibraryClass());
|
||||
Iterable<Function<?>> expectedRegisteredFunctions = expectedRegisteredFunctionsAsSet;
|
||||
assertThat(registry.getAllRegisteredFunctions(), is(expectedRegisteredFunctions));
|
||||
assertThat(registry.getAllFunctions(), is(expectedRegisteredFunctions));
|
||||
}
|
||||
|
||||
private void registerMethodsOfTestClassesViaFunctionRetrieversTo(FunctionRegistry registry) {
|
||||
@@ -73,7 +73,7 @@ public class TestSimpleFunctionRegistryRegistrations {
|
||||
Set<Function<?>> expectedRegisteredFunctionsAsSet = new HashSet<>();
|
||||
expectedRegisteredFunctionsAsSet.add(FunctionFactory.createMethodWrappingFunction(dimension));
|
||||
Iterable<Function<?>> expectedRegisteredFunctions = expectedRegisteredFunctionsAsSet;
|
||||
assertThat(registry.getAllRegisteredFunctions(), is(expectedRegisteredFunctions));
|
||||
assertThat(registry.getAllFunctions(), is(expectedRegisteredFunctions));
|
||||
}
|
||||
|
||||
}
|
||||
+3
-2
@@ -10,8 +10,9 @@ public interface FunctionRegistry {
|
||||
public void registerFunctionsRetrievedBy(ParallelFunctionRetriever functionRetriever);
|
||||
public void registerAll(Iterable<Function<?>> functions);
|
||||
|
||||
public Collection<Function<?>> getAllRegisteredFunctions();
|
||||
public Iterable<Function<?>> getRegisteredFunctionsOf(Class<?> declaringClass);
|
||||
public Collection<Function<?>> getAllFunctions();
|
||||
public Iterable<Function<?>> getFunctionsOf(Class<?> declaringClass);
|
||||
public Collection<Function<?>> getAllDimensions();
|
||||
public Iterable<Function<?>> getDimensionsOf(Class<?> declaringClass);
|
||||
|
||||
}
|
||||
+2
-2
@@ -60,7 +60,7 @@ public class RegistryFunctionsProvider implements FunctionProvider {
|
||||
|
||||
@Override
|
||||
public Collection<Function<?>> getFunctionsFor(Class<?> sourceType) {
|
||||
return filterForDeclaringType(functionRegistry.getAllRegisteredFunctions(), sourceType);
|
||||
return filterForDeclaringType(functionRegistry.getAllFunctions(), sourceType);
|
||||
}
|
||||
|
||||
private Collection<Function<?>> filterForDeclaringType(Collection<Function<?>> functions, Class<?> sourceType) {
|
||||
@@ -96,7 +96,7 @@ public class RegistryFunctionsProvider implements FunctionProvider {
|
||||
FilterCriteria<Function<?>> functionDTOFilterCriteria = new FunctionDTOFilterCriteria(functionDTO);
|
||||
ParallelFilter<Function<?>> functionMatchesDTOFilter = createFilterForCriteria(functionDTOFilterCriteria);
|
||||
|
||||
Collection<Function<?>> functionsMatchingDTO = executeFilter(functionMatchesDTOFilter, functionRegistry.getAllRegisteredFunctions());
|
||||
Collection<Function<?>> functionsMatchingDTO = executeFilter(functionMatchesDTOFilter, functionRegistry.getAllFunctions());
|
||||
if (moreThanOneFunctionMatchedDTO(functionsMatchingDTO)) {
|
||||
logThatMoreThanOneFunctionMatchedDTO(functionDTO, functionsMatchingDTO);
|
||||
}
|
||||
|
||||
+40
-26
@@ -19,12 +19,12 @@ public class SimpleFunctionRegistry implements FunctionRegistry {
|
||||
|
||||
private static final Logger LOGGER = Logger.getLogger(SimpleFunctionRegistry.class.getName());
|
||||
|
||||
private final Map<Class<?>, Collection<Function<?>>> registeredFunctionsMappedByDeclaringClass;
|
||||
private final Collection<Function<?>> dimensions;
|
||||
private final Map<Class<?>, Collection<Function<?>>> functionsMappedByDeclaringClass;
|
||||
private final Map<Class<?>, Collection<Function<?>>> dimensionsMappedByDeclaringClass;
|
||||
|
||||
public SimpleFunctionRegistry() {
|
||||
registeredFunctionsMappedByDeclaringClass = new HashMap<>();
|
||||
dimensions = new HashSet<>();
|
||||
functionsMappedByDeclaringClass = new HashMap<>();
|
||||
dimensionsMappedByDeclaringClass = new HashMap<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -52,39 +52,53 @@ public class SimpleFunctionRegistry implements FunctionRegistry {
|
||||
@Override
|
||||
public void register(Function<?> function) {
|
||||
putFunctionIntoMap(function);
|
||||
addToDimensionsIfFunctionIsADimension(function);
|
||||
}
|
||||
|
||||
private void addToDimensionsIfFunctionIsADimension(Function<?> function) {
|
||||
if (function.isDimension()) {
|
||||
dimensions.add(function);
|
||||
}
|
||||
putToDimensionsIfFunctionIsADimension(function);
|
||||
}
|
||||
|
||||
private void putFunctionIntoMap(Function<?> function) {
|
||||
if (!registeredFunctionsMappedByDeclaringClass.containsKey(function.getDeclaringType())) {
|
||||
registeredFunctionsMappedByDeclaringClass.put(function.getDeclaringType(), new HashSet<Function<?>>());
|
||||
Class<?> key = function.getDeclaringType();
|
||||
if (!functionsMappedByDeclaringClass.containsKey(key)) {
|
||||
functionsMappedByDeclaringClass.put(key, new HashSet<Function<?>>());
|
||||
}
|
||||
functionsMappedByDeclaringClass.get(key).add(function);
|
||||
}
|
||||
|
||||
private void putToDimensionsIfFunctionIsADimension(Function<?> function) {
|
||||
if (function.isDimension()) {
|
||||
Class<?> key = function.getDeclaringType();
|
||||
if (!dimensionsMappedByDeclaringClass.containsKey(key)) {
|
||||
dimensionsMappedByDeclaringClass.put(key, new HashSet<Function<?>>());
|
||||
}
|
||||
dimensionsMappedByDeclaringClass.get(key).add(function);
|
||||
}
|
||||
registeredFunctionsMappedByDeclaringClass.get(function.getDeclaringType()).add(function);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<Function<?>> getAllRegisteredFunctions() {
|
||||
public Collection<Function<?>> getAllFunctions() {
|
||||
return collectAllFunctionsIn(functionsMappedByDeclaringClass);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<Function<?>> getFunctionsOf(Class<?> declaringClass) {
|
||||
return functionsMappedByDeclaringClass.get(declaringClass);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<Function<?>> getAllDimensions() {
|
||||
return collectAllFunctionsIn(dimensionsMappedByDeclaringClass);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<Function<?>> getDimensionsOf(Class<?> declaringClass) {
|
||||
return dimensionsMappedByDeclaringClass.get(declaringClass);
|
||||
}
|
||||
|
||||
private Collection<Function<?>> collectAllFunctionsIn(Map<Class<?>, Collection<Function<?>>> functionsMap) {
|
||||
Set<Function<?>> registeredMethods = new HashSet<>();
|
||||
for (Collection<Function<?>> registeredMethodsOfClass : registeredFunctionsMappedByDeclaringClass.values()) {
|
||||
for (Collection<Function<?>> registeredMethodsOfClass : functionsMap.values()) {
|
||||
registeredMethods.addAll(registeredMethodsOfClass);
|
||||
}
|
||||
return registeredMethods;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<Function<?>> getRegisteredFunctionsOf(Class<?> declaringClass) {
|
||||
return registeredFunctionsMappedByDeclaringClass.get(declaringClass);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<Function<?>> getAllDimensions() {
|
||||
return dimensions;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user