}
}
- private static Source toSource(Node node) {
+ private static Source toSource(Node node) throws RepositoryException {
+
+// try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+// node.getSession().exportDocumentView(node.getPath(), out, true, false);
+// DocumentBuilder documentBuilder = DocumentBuilderFactory.newNSInstance().newDocumentBuilder();
+// Document document;
+// try (ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray())) {
+// document = documentBuilder.parse(in);
+// }
+// cleanJcrDom(document);
+// return new DOMSource(document);
+// } catch (IOException | SAXException | ParserConfigurationException e) {
+// throw new RuntimeException(e);
+// }
+
try (PipedInputStream in = new PipedInputStream();) {
CompletableFuture<Document> toDo = CompletableFuture.supplyAsync(() -> {
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);
}
private XSModel xsModel;
private SortedMap<QName, Map<QName, CrAttributeType>> types;
- private boolean validating = false;
+ private boolean validating = true;
private final static boolean limited = false;
try {
validator.validate(source);
} catch (SAXException e) {
- log.error(source + " is not valid ", e);
+ log.error(source + " is not valid " + e);
// throw new IllegalArgumentException("Provided source is not valid", e);
}
}