・PUTとPOSTの判別が間違っている場合があったのを修正.
・状態保存の必要性判定アルゴリズムの一部に誤りがあったのを修正.
1 parent 9525d9a commit f77e2dc80de848439f985c98064781a0eeb0dc3d
n-nitta authored on 23 Apr 2021
Showing 2 changed files
View
2
■■■
AlgebraicDataflowArchitectureModel/src/algorithms/JerseyCodeGenerator.java
VariableDeclaration param = new VariableDeclaration(srcType, srcName);
param.addAnnotation(new Annotation("FormParam", "\"" + srcName + "\""));
vars.add(param);
MethodDeclaration update = new MethodDeclaration("update" + srcResName, false, typeVoid, vars);
if (((StoreAttribute) rn.getAttribute()).isStored()) {
if (((StoreAttribute) rn.getAttribute()).isNeeded()) {
update.addAnnotation(new Annotation("POST"));
} else {
update.addAnnotation(new Annotation("PUT"));
}
View
24
AlgebraicDataflowArchitectureModel/src/algorithms/NecessityOfStoringResourceStates.java
package algorithms;
 
import java.util.Collection;
import java.util.HashSet;
 
import models.*;
import models.algebra.*;
 
public class NecessityOfStoringResourceStates {
static public ResourceDependencyGraph doDecide(DataFlowModel model) {
ResourceDependencyGraph graph = model.getResourceDependencyGraph();
DataConstraintModel dcmodel = (DataConstraintModel) model;
for (ChannelGenerator generator : dcmodel.getChannelGenerators()) {
boolean flag = false;
for (ChannelMember member : ((DataflowChannelGenerator) generator).getOutputChannelMembers()) {
Collection<ChannelGenerator> channels = new HashSet<>(model.getIOChannelGenerators());
channels.addAll(model.getChannelGenerators());
for (ChannelGenerator generator: channels) {
for (ChannelMember member: ((DataflowChannelGenerator) generator).getOutputChannelMembers()) {
boolean flag = false;
Expression curexp = member.getStateTransition().getCurStateExpression();
Expression nextexp = member.getStateTransition().getNextStateExpression();
for (Position pos : curexp.getVariables().keySet()) {
if (nextexp.contains(curexp.getVariables().get(pos))) {
flag = true;
break;
}
}
}
for (Node node : graph.getNodes()) {
for (ChannelMember member : generator.getChannelMembers()) {
for (Node node : graph.getNodes()) {
if (((ResourceNode) node).getIdentifierTemplate().equals(member.getIdentifierTemplate())) {
setStoreAttribute(flag, (ResourceNode) node);
}
}
}
}
for (Node node : graph.getNodes()) {
HashSet<ChannelGenerator> channels = new HashSet<>();
HashSet<ChannelGenerator> inChannels = new HashSet<>();
for(Edge pre : ((ResourceNode) node).getInEdges()) {
channels.add(((ResourceDependency) pre).getChannelGenerator());
inChannels.add(((ResourceDependency) pre).getChannelGenerator());
}
if ((channels.size() > 1)) {
if ((inChannels.size() > 1)) {
setStoreAttribute(true, (ResourceNode) node);
} else if (((ResourceNode) node).getAttribute() == null) {
setStoreAttribute(false, (ResourceNode) node);
}