Удалил код первой попытки линивой инициализации
This commit is contained in:
parent
29145fe093
commit
2a9413ab46
@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>dev.struchkov.godfather</groupId>
|
<groupId>dev.struchkov.godfather</groupId>
|
||||||
<artifactId>godfather-bot</artifactId>
|
<artifactId>godfather-bot</artifactId>
|
||||||
<version>0.0.10</version>
|
<version>0.0.11</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>bot-context</artifactId>
|
<artifactId>bot-context</artifactId>
|
||||||
|
@ -12,7 +12,6 @@ public class UnitDefinition {
|
|||||||
private String name;
|
private String name;
|
||||||
private Object objectConfig;
|
private Object objectConfig;
|
||||||
private Method method;
|
private Method method;
|
||||||
private boolean lazy;
|
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return name;
|
return name;
|
||||||
@ -66,12 +65,4 @@ public class UnitDefinition {
|
|||||||
this.dependentUnits.addAll(dependentUnitNames);
|
this.dependentUnits.addAll(dependentUnitNames);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isLazy() {
|
|
||||||
return lazy;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLazy(boolean lazy) {
|
|
||||||
this.lazy = lazy;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -13,8 +13,6 @@ public @interface Unit {
|
|||||||
|
|
||||||
String value() default "";
|
String value() default "";
|
||||||
|
|
||||||
boolean lazy() default false;
|
|
||||||
|
|
||||||
boolean mainUnit() default false;
|
boolean mainUnit() default false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>dev.struchkov.godfather</groupId>
|
<groupId>dev.struchkov.godfather</groupId>
|
||||||
<artifactId>godfather-bot</artifactId>
|
<artifactId>godfather-bot</artifactId>
|
||||||
<version>0.0.10</version>
|
<version>0.0.11</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>bot-core</artifactId>
|
<artifactId>bot-core</artifactId>
|
||||||
|
@ -31,7 +31,6 @@ public class StorylineMaker {
|
|||||||
|
|
||||||
private final Map<String, UnitDefinition> unitDefinitions = new HashMap<>();
|
private final Map<String, UnitDefinition> unitDefinitions = new HashMap<>();
|
||||||
private final Map<String, MainUnit> unitMap = new HashMap<>();
|
private final Map<String, MainUnit> unitMap = new HashMap<>();
|
||||||
private final Set<String> lazyUnits = new HashSet<>();
|
|
||||||
private final Set<String> mainUnits = new HashSet<>();
|
private final Set<String> mainUnits = new HashSet<>();
|
||||||
|
|
||||||
public StorylineMaker(List<Object> unitConfigurations) {
|
public StorylineMaker(List<Object> unitConfigurations) {
|
||||||
@ -50,7 +49,6 @@ public class StorylineMaker {
|
|||||||
generateUnitDefinitions();
|
generateUnitDefinitions();
|
||||||
try {
|
try {
|
||||||
createUnitMap();
|
createUnitMap();
|
||||||
createLazy();
|
|
||||||
final Set<MainUnit> mainUnit = getMainUnit();
|
final Set<MainUnit> mainUnit = getMainUnit();
|
||||||
return new Storyline(mainUnit, unitMap);
|
return new Storyline(mainUnit, unitMap);
|
||||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||||
@ -66,43 +64,18 @@ public class StorylineMaker {
|
|||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createLazy() throws IllegalAccessException, InvocationTargetException {
|
|
||||||
final List<UnitDefinition> lazyDefinitions = unitDefinitions.values().stream()
|
|
||||||
.filter(UnitDefinition::isLazy)
|
|
||||||
.toList();
|
|
||||||
for (UnitDefinition lazyDefinition : lazyDefinitions) {
|
|
||||||
final MainUnit lazyUnit = createUnit(lazyDefinition);
|
|
||||||
unitMap.put(lazyDefinition.getName(), lazyUnit);
|
|
||||||
for (String dependentUnit : lazyDefinition.getDependentUnits()) {
|
|
||||||
final MainUnit mainUnit = unitMap.get(dependentUnit);
|
|
||||||
final Set<MainUnit> nextUnits = mainUnit.getNextUnits();
|
|
||||||
if (nextUnits != null) {
|
|
||||||
nextUnits.add(lazyUnit);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void createUnitMap() throws IllegalAccessException, InvocationTargetException {
|
private void createUnitMap() throws IllegalAccessException, InvocationTargetException {
|
||||||
for (UnitDefinition unitDefinition : unitDefinitions.values()) {
|
for (UnitDefinition unitDefinition : unitDefinitions.values()) {
|
||||||
if (!unitMap.containsKey(unitDefinition.getName())) {
|
if (!unitMap.containsKey(unitDefinition.getName())) {
|
||||||
final Set<String> nextUnitNames = unitDefinition.getNextUnitNames();
|
final Set<String> nextUnitNames = unitDefinition.getNextUnitNames();
|
||||||
if (nextUnitNames.isEmpty() || unitMap.keySet().containsAll(nextUnitNames)) {
|
if (nextUnitNames.isEmpty() || unitMap.keySet().containsAll(nextUnitNames)) {
|
||||||
createUnit(unitDefinition);
|
createUnit(unitDefinition);
|
||||||
} else if (unitDefinition.isLazy()) {
|
|
||||||
createLazyUnit(unitDefinition);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createLazyUnit(UnitDefinition unitDefinition) {
|
|
||||||
final String unitName = unitDefinition.getName();
|
|
||||||
unitMap.put(unitName, LazyUnit.create(unitName, unitDefinition));
|
|
||||||
}
|
|
||||||
|
|
||||||
private MainUnit createUnit(UnitDefinition unitDefinition) throws IllegalAccessException, InvocationTargetException {
|
private MainUnit createUnit(UnitDefinition unitDefinition) throws IllegalAccessException, InvocationTargetException {
|
||||||
|
|
||||||
final Object objectConfig = unitDefinition.getObjectConfig();
|
final Object objectConfig = unitDefinition.getObjectConfig();
|
||||||
final String currentUnitName = unitDefinition.getName();
|
final String currentUnitName = unitDefinition.getName();
|
||||||
final Method method = unitDefinition.getMethod();
|
final Method method = unitDefinition.getMethod();
|
||||||
@ -118,7 +91,6 @@ public class StorylineMaker {
|
|||||||
unitMap.put(currentUnitName, newUnit);
|
unitMap.put(currentUnitName, newUnit);
|
||||||
|
|
||||||
final Set<String> dependentUnitsName = unitDefinition.getDependentUnits();
|
final Set<String> dependentUnitsName = unitDefinition.getDependentUnits();
|
||||||
dependentUnitsName.removeAll(lazyUnits);
|
|
||||||
for (String dependentUnitName : dependentUnitsName) {
|
for (String dependentUnitName : dependentUnitsName) {
|
||||||
final Set<String> dependentNextUnitNames = unitDefinitions.get(dependentUnitName).getNextUnitNames();
|
final Set<String> dependentNextUnitNames = unitDefinitions.get(dependentUnitName).getNextUnitNames();
|
||||||
if (unitMap.keySet().containsAll(dependentNextUnitNames)) {
|
if (unitMap.keySet().containsAll(dependentNextUnitNames)) {
|
||||||
@ -145,11 +117,7 @@ public class StorylineMaker {
|
|||||||
unitDefinition.setName(unitName);
|
unitDefinition.setName(unitName);
|
||||||
unitDefinition.setMethod(method);
|
unitDefinition.setMethod(method);
|
||||||
unitDefinition.setObjectConfig(config);
|
unitDefinition.setObjectConfig(config);
|
||||||
unitDefinition.setLazy(unitConfig.lazy());
|
|
||||||
|
|
||||||
if (unitConfig.lazy()) {
|
|
||||||
lazyUnits.add(unitName);
|
|
||||||
}
|
|
||||||
if (unitConfig.mainUnit()) {
|
if (unitConfig.mainUnit()) {
|
||||||
mainUnits.add(unitName);
|
mainUnits.add(unitName);
|
||||||
}
|
}
|
||||||
|
4
pom.xml
4
pom.xml
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>dev.struchkov.godfather</groupId>
|
<groupId>dev.struchkov.godfather</groupId>
|
||||||
<artifactId>godfather-bot</artifactId>
|
<artifactId>godfather-bot</artifactId>
|
||||||
<version>0.0.10</version>
|
<version>0.0.11</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
@ -32,7 +32,7 @@
|
|||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
|
|
||||||
<godfather.ver>0.0.10</godfather.ver>
|
<godfather.ver>0.0.11</godfather.ver>
|
||||||
|
|
||||||
<godfather.context.ver>${godfather.ver}</godfather.context.ver>
|
<godfather.context.ver>${godfather.ver}</godfather.context.ver>
|
||||||
<godfather.core.ver>${godfather.ver}</godfather.core.ver>
|
<godfather.core.ver>${godfather.ver}</godfather.core.ver>
|
||||||
|
Loading…
Reference in New Issue
Block a user