in src/main/java/org/apache/cxf/cwiki/SiteExporter.java [1094:1138]
public Future<?> loadPage(Element pageSumEl,
final Set<String> allPages,
final Set<Page> newPages) throws Exception {
Document doc = DOMUtils.newDocument();
Element el = doc.createElementNS(SOAPNS, "ns1:getPage");
Element el2 = doc.createElement("in0");
el.appendChild(el2);
el2.setTextContent(loginToken);
el2 = doc.createElement("in1");
el.appendChild(el2);
el2.setTextContent(DOMUtils.getChildContent(pageSumEl, "id"));
doc.appendChild(el);
//make sure we only fire off about 15-20 or confluence may get a bit overloaded
while (asyncCount.get() > 15) {
Thread.sleep(10);
}
asyncCount.incrementAndGet();
Future<?> f = getDispatch().invokeAsync(doc, new AsyncHandler<Document>() {
public void handleResponse(Response<Document> doc) {
try {
Page page = new Page(doc.get(), SiteExporter.this);
page.setExporter(SiteExporter.this);
Page oldPage = pages.put(page.getId(), page);
if (oldPage == null || page.getModifiedTime().compare(oldPage.getModifiedTime()) > 0) {
if (!modifiedPages.contains(page)) {
modifiedPages.add(page);
}
if (oldPage == null) {
//need to check parents to see if it has a {children} tag so we can re-render
newPages.add(page);
}
}
if (allPages.contains(page.getId())) {
allPages.remove(page.getId());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
asyncCount.decrementAndGet();
}
}
});
return f;
}