Skip to content

Commit d1cdd00

Browse files
committed
ignore voters when saving feature proposal
1 parent 99afee6 commit d1cdd00

1 file changed

Lines changed: 10 additions & 6 deletions

File tree

src/main/java/edu/tamu/app/model/repo/impl/FeatureProposalRepoImpl.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import java.util.Optional;
66

7+
import org.springframework.beans.BeanUtils;
78
import org.springframework.beans.factory.annotation.Autowired;
89
import org.springframework.messaging.simp.SimpMessagingTemplate;
910

@@ -65,16 +66,19 @@ public FeatureProposal create(Idea idea) {
6566
}
6667

6768
@Override
68-
public FeatureProposal update(FeatureProposal featureProposal) {
69-
for (Idea idea : featureProposal.getIdeas()) {
69+
public FeatureProposal update(FeatureProposal featureProposalToUpdate) {
70+
FeatureProposal persistedFeatureProposal = featureProposalRepo.findOne(featureProposalToUpdate.getId());
71+
// NOTE: ignore voters on update to avoid concurrency issue of save after votes occur
72+
BeanUtils.copyProperties(featureProposalToUpdate, persistedFeatureProposal, "voters");
73+
for (Idea idea : persistedFeatureProposal.getIdeas()) {
7074
idea.setState(IdeaState.ELEVATED);
71-
idea.setFeatureProposal(featureProposal);
75+
idea.setFeatureProposal(persistedFeatureProposal);
7276
idea = ideaRepo.save(idea);
7377
simpMessagingTemplate.convertAndSend("/channel/ideas/update", new ApiResponse(SUCCESS, idea));
7478
}
75-
featureProposal = featureProposalRepo.save(featureProposal);
76-
simpMessagingTemplate.convertAndSend("/channel/feature-proposals/update", new ApiResponse(SUCCESS, featureProposal));
77-
return featureProposal;
79+
persistedFeatureProposal = featureProposalRepo.save(persistedFeatureProposal);
80+
simpMessagingTemplate.convertAndSend("/channel/feature-proposals/update", new ApiResponse(SUCCESS, persistedFeatureProposal));
81+
return persistedFeatureProposal;
7882
}
7983

8084
@Override

0 commit comments

Comments
 (0)