package org.argeo.cms.acr;
+import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
-import java.util.TreeSet;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
private CompletableFuture<ContentSession> edition;
- private Set<ContentProvider> modifiedProviders = new TreeSet<>();
+ private Set<ContentProvider> modifiedProviders = new HashSet<>();
private Content sessionRunDir;
work.accept(this);
return this;
}).thenApply((s) -> {
- // TODO optimise
- for (ContentProvider provider : modifiedProviders) {
- if (provider instanceof DomContentProvider) {
- ((DomContentProvider) provider).persist(s);
+ synchronized (CmsContentSession.this) {
+ // TODO optimise
+ for (ContentProvider provider : modifiedProviders) {
+ if (provider instanceof DomContentProvider) {
+ ((DomContentProvider) provider).persist(s);
+ }
}
+ modifiedProviders.clear();
+ return s;
}
- return s;
});
return edition.minimalCompletionStage();
}
}
@Override
- public void notifyModification(ProvidedContent content) {
+ public synchronized void notifyModification(ProvidedContent content) {
ContentProvider contentProvider = content.getProvider();
modifiedProviders.add(contentProvider);
}