private void unimportPagesFromWiki( Collection<XarEntry> pages, String wiki, PackageConfiguration configuration) { WikiReference wikiReference = new WikiReference(wiki); XWikiContext xcontext = getXWikiContext(); for (XarEntry xarEntry : pages) { DocumentReference documentReference = this.resolver.resolve(xarEntry.getDocumentReference(), wikiReference); try { XWikiDocument document = getXWikiContext().getWiki().getDocument(documentReference, xcontext); if (!document.isNew()) { String language = xarEntry.getLanguage(); if (language != null) { document = document.getTranslatedDocument(language, xcontext); getXWikiContext().getWiki().deleteDocument(document, xcontext); } else { getXWikiContext().getWiki().deleteAllDocuments(document, xcontext); } } } catch (XWikiException e) { this.logger.error("Failed to delete document [" + documentReference + "]", e); } } }
@Override public List<XarEntry> getEntries(File xarFile) throws IOException { List<XarEntry> documents = null; FileInputStream fis = new FileInputStream(xarFile); ZipArchiveInputStream zis = new ZipArchiveInputStream(fis); try { for (ZipArchiveEntry zipEntry = zis.getNextZipEntry(); zipEntry != null; zipEntry = zis.getNextZipEntry()) { if (!zipEntry.isDirectory()) { try { XarPageLimitedHandler documentHandler = new XarPageLimitedHandler(this.componentManager); parseDocument(zis, documentHandler); if (documents == null) { documents = new ArrayList<XarEntry>(); } XarEntry xarEntry = documentHandler.getXarEntry(); xarEntry.setEntryName(zipEntry.getName()); documents.add(xarEntry); } catch (NotADocumentException e) { // Impossible to know that before parsing } catch (Exception e) { this.logger.error("Failed to parse document [" + zipEntry.getName() + "]", e); } } } } finally { zis.close(); } return documents != null ? documents : Collections.<XarEntry>emptyList(); }