Browse Source

rollback set of readinessStatus on setCtx

pull/14208/head
dshvaika 11 months ago
parent
commit
f5fc499662
  1. 12
      application/src/main/java/org/thingsboard/server/service/cf/ctx/state/BaseCalculatedFieldState.java
  2. 1
      application/src/main/java/org/thingsboard/server/service/cf/ctx/state/propagation/PropagationCalculatedFieldState.java
  3. 2
      application/src/test/java/org/thingsboard/server/service/cf/ctx/state/GeofencingCalculatedFieldStateTest.java
  4. 2
      application/src/test/java/org/thingsboard/server/service/cf/ctx/state/ScriptCalculatedFieldStateTest.java
  5. 2
      application/src/test/java/org/thingsboard/server/service/cf/ctx/state/SimpleCalculatedFieldStateTest.java

12
application/src/main/java/org/thingsboard/server/service/cf/ctx/state/BaseCalculatedFieldState.java

@ -57,6 +57,7 @@ public abstract class BaseCalculatedFieldState implements CalculatedFieldState,
this.ctx = ctx; this.ctx = ctx;
this.actorCtx = actorCtx; this.actorCtx = actorCtx;
this.requiredArguments = ctx.getArgNames(); this.requiredArguments = ctx.getArgNames();
this.readinessStatus = checkReadiness(requiredArguments, arguments);
} }
@Override @Override
@ -94,11 +95,11 @@ public abstract class BaseCalculatedFieldState implements CalculatedFieldState,
} }
if (updatedArguments != null) { if (updatedArguments == null) {
readinessStatus = checkReadiness(requiredArguments, arguments); return Collections.emptyMap();
return updatedArguments;
} }
return Collections.emptyMap(); readinessStatus = checkReadiness(requiredArguments, arguments);
return updatedArguments;
} }
@Override @Override
@ -153,6 +154,9 @@ public abstract class BaseCalculatedFieldState implements CalculatedFieldState,
} }
public ReadinessStatus checkReadiness(List<String> requiredArguments, Map<String, ArgumentEntry> currentArguments) { public ReadinessStatus checkReadiness(List<String> requiredArguments, Map<String, ArgumentEntry> currentArguments) {
if (currentArguments == null) {
return new ReadinessStatus(requiredArguments);
}
List<String> emptyArguments = null; List<String> emptyArguments = null;
for (String requiredArgumentKey : requiredArguments) { for (String requiredArgumentKey : requiredArguments) {
ArgumentEntry argumentEntry = currentArguments.get(requiredArgumentKey); ArgumentEntry argumentEntry = currentArguments.get(requiredArgumentKey);

1
application/src/main/java/org/thingsboard/server/service/cf/ctx/state/propagation/PropagationCalculatedFieldState.java

@ -50,6 +50,7 @@ public class PropagationCalculatedFieldState extends ScriptCalculatedFieldState
this.actorCtx = actorCtx; this.actorCtx = actorCtx;
this.requiredArguments = new ArrayList<>(ctx.getArgNames()); this.requiredArguments = new ArrayList<>(ctx.getArgNames());
requiredArguments.add(PROPAGATION_CONFIG_ARGUMENT); requiredArguments.add(PROPAGATION_CONFIG_ARGUMENT);
this.readinessStatus = checkReadiness(requiredArguments, arguments);
if (ctx.isApplyExpressionForResolvedArguments()) { if (ctx.isApplyExpressionForResolvedArguments()) {
this.tbelExpression = ctx.getTbelExpressions().get(ctx.getExpression()); this.tbelExpression = ctx.getTbelExpressions().get(ctx.getExpression());
} }

2
application/src/test/java/org/thingsboard/server/service/cf/ctx/state/GeofencingCalculatedFieldStateTest.java

@ -200,7 +200,7 @@ public class GeofencingCalculatedFieldStateTest {
@Test @Test
void testIsReadyWhenNotAllArgPresent() { void testIsReadyWhenNotAllArgPresent() {
assertThat(state.isReady()).isFalse(); assertThat(state.isReady()).isFalse();
assertThat(state.getReadinessStatus()).isNull(); assertThat(state.getReadinessStatus().getEmptyArguments()).containsExactlyInAnyOrderElementsOf(state.getRequiredArguments());
} }
@Test @Test

2
application/src/test/java/org/thingsboard/server/service/cf/ctx/state/ScriptCalculatedFieldStateTest.java

@ -161,7 +161,7 @@ public class ScriptCalculatedFieldStateTest {
@Test @Test
void testIsReadyWhenNotAllArgPresent() { void testIsReadyWhenNotAllArgPresent() {
assertThat(state.isReady()).isFalse(); assertThat(state.isReady()).isFalse();
assertThat(state.getReadinessStatus()).isNull(); assertThat(state.getReadinessStatus().getEmptyArguments()).containsExactlyInAnyOrderElementsOf(state.getRequiredArguments());
} }
@Test @Test

2
application/src/test/java/org/thingsboard/server/service/cf/ctx/state/SimpleCalculatedFieldStateTest.java

@ -204,7 +204,7 @@ public class SimpleCalculatedFieldStateTest {
@Test @Test
void testIsReadyWhenNotAllArgPresent() { void testIsReadyWhenNotAllArgPresent() {
assertThat(state.isReady()).isFalse(); assertThat(state.isReady()).isFalse();
assertThat(state.getReadinessStatus()).isNull(); assertThat(state.getReadinessStatus().getEmptyArguments()).containsExactlyInAnyOrderElementsOf(state.getRequiredArguments());
} }
@Test @Test

Loading…
Cancel
Save