JSON型のリソースに対して,遷移前の状態で定義されていないメンバの値を更新できるようにした.
1 parent 6f90c4d commit 7d28550a38b61243e90875bc62895d22022f3591
Naoya Nitta authored on 8 Jul
Showing 2 changed files
View
20
AlgebraicDataflowArchitectureModel/src/simulator/SystemState.java
if (res != null) {
state = res.getState();
((PrimitiveResourceState) state).setValue((Constant) resStateValue);
} else {
state = new PrimitiveResourceState((Constant) resStateValue);
ResourceIdentifier parentResId = (ResourceIdentifier) resourceIdentifier.getParent();
Type parentResType = parentResId.getResourceStateType();
if (parentResType != null && DataConstraintModel.typeList.isAncestorOf(parentResType)) {
} else if (parentResType != null && DataConstraintModel.typeMap.isAncestorOf(parentResType)) {
JsonResourceState parentState = (JsonResourceState) getResource(parentResId).getState();
parentState.addChildState(((Constant) resourceIdentifier.getLastParam()).toString(), new PrimitiveResourceState((Constant) resStateValue));
} else if (parentResType != null && DataConstraintModel.typeJson.isAncestorOf(parentResType)) {
JsonResourceState parentState = (JsonResourceState) getResource(parentResId).getState();
parentState.addChildState("\"" + resourceIdentifier.getResourceName() + "\"", new PrimitiveResourceState((Constant) resStateValue));
}
}
return resourceIdentifier;
}
}
View
6
AlgebraicDataflowArchitectureModel/src/tests/SimulatorTest.java
assertTrue(rootRes.getState() instanceof MapResourceState);
assertEquals(0, rootRes.getChildren().size());
assertEquals(0, ((MapResourceState) rootRes.getState()).getChildStates().size());
}
System.out.println("companies:" + initialState.getResource(ResourceIdentifier.createFrom(companies)).getState().getValue());
System.out.println("customers:" + initialState.getResource(ResourceIdentifier.createFrom(customers)).getState().getValue());
System.out.println("companies:" + initialState.getResource(ResourceIdentifier.createFrom(companies)).getState().getValue());
// Next state
stream.addLine("addCompany(\"A\", \"Osaka\")");
Expression messageAddComp = parser.parseTerm(stream, model);
Resource companiesRes = nextState.getResource(ResourceIdentifier.createFrom(companies));
assertTrue(companiesRes.getState() instanceof MapResourceState);
assertEquals(1, companiesRes.getChildren().size());
assertEquals(1, ((MapResourceState) companiesRes.getState()).getChildStates().size());
System.out.println("companies:" + nextState.getResource(ResourceIdentifier.createFrom(companies)).getState().getValue());
System.out.println("customers:" + nextState.getResource(ResourceIdentifier.createFrom(customers)).getState().getValue());
System.out.println("companies:" + nextState.getResource(ResourceIdentifier.createFrom(companies)).getState().getValue());
// After the next state
stream.addLine("addCustomer(\"1\", \"A\")");
Expression messageAddCust = parser.parseTerm(stream, model);
Resource customersRes = nextNextState.getResource(ResourceIdentifier.createFrom(customers));
assertTrue(customersRes.getState() instanceof MapResourceState);
assertEquals(1, customersRes.getChildren().size());
assertEquals(1, ((MapResourceState) customersRes.getState()).getChildStates().size());
System.out.println("companies:" + nextNextState.getResource(ResourceIdentifier.createFrom(companies)).getState().getValue());
System.out.println("customers:" + nextNextState.getResource(ResourceIdentifier.createFrom(customers)).getState().getValue());
System.out.println("companies:" + nextNextState.getResource(ResourceIdentifier.createFrom(companies)).getState().getValue());
} catch (ExpectedRightBracket | WrongJsonExpression | ExpectedColon | ParameterizedIdentifierIsFutureWork | ResolvingMultipleDefinitionIsFutureWork | InvalidMessage | UnificationFailed | ValueUndefined e) {
e.printStackTrace();
}