mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-07 21:01:03 +00:00
Implemented the possibility to unregister classes from the registry
This commit is contained in:
1 parent
106b8392c1
commit
47feb629e6
3 files changed
+55
-7
No files matched your search
+27
-1
@@ -19,7 +19,7 @@ import com.sap.sse.datamining.test.functions.test_classes.Test_ExternalLibraryCl
|
||||
import com.sap.sse.datamining.test.util.ExpectedFunctionRegistryUtil;
|
||||
|
||||
|
||||
public class TestSimpleFunctionRegistryRegistrations {
|
||||
public class TestSimpleFunctionRegistry {
|
||||
|
||||
private static ExpectedFunctionRegistryUtil functionRegistryUtil;
|
||||
|
||||
@@ -58,5 +58,31 @@ public class TestSimpleFunctionRegistryRegistrations {
|
||||
Collection<Function<?>> expectedExternalFunctions = functionRegistryUtil.getExpectedExternalFunctionsFor(Test_ExternalLibraryClass.class);
|
||||
assertThat(registry.getExternalFunctions(), is(expectedExternalFunctions));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUnregistration() {
|
||||
FunctionRegistry registry = new SimpleFunctionRegistry();
|
||||
registry.registerAllWithInternalFunctionPolicy(internalClassesToScan);
|
||||
|
||||
Collection<Function<?>> expectedDimensions = new HashSet<>();
|
||||
expectedDimensions.addAll(functionRegistryUtil.getExpectedDimensionsFor(Test_HasLegContext.class));
|
||||
expectedDimensions.addAll(functionRegistryUtil.getExpectedDimensionsFor(Test_HasRaceContext.class));
|
||||
assertThat(registry.getDimensions(), is(expectedDimensions));
|
||||
|
||||
Set<Class<?>> classesToUnregister = new HashSet<>();
|
||||
classesToUnregister.add(Test_HasLegContext.class);
|
||||
registry.unregisterAllFunctionsOf(classesToUnregister);
|
||||
|
||||
expectedDimensions = functionRegistryUtil.getExpectedDimensionsFor(Test_HasRaceContext.class);
|
||||
assertThat(registry.getDimensions(), is(expectedDimensions));
|
||||
|
||||
registry.registerAllWithInternalFunctionPolicy(internalClassesToScan);
|
||||
classesToUnregister = new HashSet<>();
|
||||
classesToUnregister.add(Test_HasRaceContext.class);
|
||||
registry.unregisterAllFunctionsOf(classesToUnregister);
|
||||
|
||||
expectedDimensions = functionRegistryUtil.getExpectedDimensionsFor(Test_HasLegContext.class);
|
||||
assertThat(registry.getDimensions(), is(expectedDimensions));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,6 +7,8 @@ public interface FunctionRegistry {
|
||||
public void registerAllWithInternalFunctionPolicy(Collection<Class<?>> classesToScan);
|
||||
public void registerAllWithExternalFunctionPolicy(Collection<Class<?>> externalClassesToScan);
|
||||
|
||||
public void unregisterAllFunctionsOf(Collection<Class<?>> classesToUnregister);
|
||||
|
||||
public Collection<Function<?>> getAllFunctions();
|
||||
public Collection<Function<?>> getAllFunctionsOf(Class<?> declaringType);
|
||||
public Collection<Function<?>> getStatistics();
|
||||
|
||||
+26
-6
@@ -22,11 +22,18 @@ public class SimpleFunctionRegistry implements FunctionRegistry {
|
||||
private final Map<Class<?>, Set<Function<?>>> statistics;
|
||||
private final Map<Class<?>, Set<Function<?>>> dimensions;
|
||||
private final Map<Class<?>, Set<Function<?>>> externalFunctions;
|
||||
|
||||
private final Collection<Map<Class<?>, Set<Function<?>>>> functionMaps;
|
||||
|
||||
public SimpleFunctionRegistry() {
|
||||
statistics = new HashMap<>();
|
||||
dimensions = new HashMap<>();
|
||||
externalFunctions = new HashMap<>();
|
||||
|
||||
functionMaps = new ArrayList<>();
|
||||
functionMaps.add(statistics);
|
||||
functionMaps.add(dimensions);
|
||||
functionMaps.add(externalFunctions);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -130,21 +137,34 @@ public class SimpleFunctionRegistry implements FunctionRegistry {
|
||||
return !method.getReturnType().equals(Void.TYPE) && !method.getDeclaringClass().equals(Object.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unregisterAllFunctionsOf(Collection<Class<?>> classesToUnregister) {
|
||||
for (Class<?> classToUnregister : classesToUnregister) {
|
||||
unregisterAllFunctionsOf(classToUnregister);
|
||||
}
|
||||
}
|
||||
|
||||
private void unregisterAllFunctionsOf(Class<?> classToUnregister) {
|
||||
for (Map<Class<?>, Set<Function<?>>> functionMap : functionMaps) {
|
||||
functionMap.remove(classToUnregister);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<Function<?>> getAllFunctions() {
|
||||
Collection<Function<?>> allFunctions = new HashSet<>();
|
||||
allFunctions.addAll(getStatistics());
|
||||
allFunctions.addAll(getDimensions());
|
||||
allFunctions.addAll(getExternalFunctions());
|
||||
for (Map<Class<?>, Set<Function<?>>> functionMap : functionMaps) {
|
||||
allFunctions.addAll(asSet(functionMap));
|
||||
}
|
||||
return allFunctions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<Function<?>> getAllFunctionsOf(Class<?> declaringType) {
|
||||
Collection<Function<?>> allFunctions = new HashSet<>();
|
||||
allFunctions.addAll(getStatisticsOf(declaringType));
|
||||
allFunctions.addAll(getDimensionsOf(declaringType));
|
||||
allFunctions.addAll(getExternalFunctionsOf(declaringType));
|
||||
for (Map<Class<?>, Set<Function<?>>> functionMap : functionMaps) {
|
||||
allFunctions.addAll(functionMap.get(declaringType));
|
||||
}
|
||||
return allFunctions;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user