<uri>/cspace-services/imports</uri>
<filename>imports/import-1objectexit-post.xml</filename>
<response>
- <expected level="TEXT" />
+ <expected level="TREE" />
<filename>imports/res/import-1objectexit-post.res.xml</filename>
</response>
</test>
-
+
<!-- FIXME: Add forms-based import test -->
+ <test ID="import-post-form">
+ <expectedCodes>200</expectedCodes>
+ <method>POST</method>
+ <uri>/cspace-services/imports?type=xml</uri>
+ <filename>imports/import-1objectexit-post-form.xml</filename>
+ <response>
+ <expected level="TREE" />
+ <filename>imports/res/import-1objectexit-post.res.xml</filename>
+ </response>
+ </test>
+
+ <!-- FIXME: Add tests with non-UTF-8 chars in request payloads -->
+ <!-- (CSPACE-3923 and see also CSPACE-4866), via each imports path -->
+
+ <!-- FIXME: Add test with special chars in request payloads -->
+ <!-- (CSPACE-3923), via each imports path -->
+
+ <!-- FIXME: Add tests with invalid payloads, via each imports path -->
</testGroup>
</xmlReplay>
package org.collectionspace.services.imports.nuxeo;\r
\r
import java.io.File;\r
+import java.util.Map;\r
import org.apache.commons.logging.Log;\r
import org.apache.commons.logging.LogFactory;\r
+import org.collectionspace.services.client.PoxPayloadIn;\r
+import org.collectionspace.services.client.PoxPayloadOut;\r
+import org.collectionspace.services.common.context.ServiceContext;\r
import org.collectionspace.services.nuxeo.client.java.NuxeoClientEmbedded;\r
import org.collectionspace.services.nuxeo.client.java.NuxeoConnectorEmbedded;\r
+import org.collectionspace.services.nuxeo.util.NuxeoUtils;\r
+import org.nuxeo.ecm.core.api.DocumentModel;\r
+import org.nuxeo.ecm.core.api.DocumentRef;\r
import org.nuxeo.ecm.core.api.repository.RepositoryInstance;\r
import org.nuxeo.ecm.core.io.DocumentPipe;\r
import org.nuxeo.ecm.core.io.DocumentReader;\r
+import org.nuxeo.ecm.core.io.DocumentTranslationMap;\r
import org.nuxeo.ecm.core.io.DocumentWriter;\r
import org.nuxeo.ecm.core.io.impl.DocumentPipeImpl;\r
import org.nuxeo.ecm.core.io.impl.plugins.DocumentModelWriter;\r
RepositoryInstance repoSession = client.openRepository();\r
try {\r
return importTree(repoSession, file, dest);\r
+ } catch (Exception e) {\r
+ throw e;\r
} finally {\r
// repository.close();\r
client.releaseRepository(repoSession);\r
}\r
}\r
\r
- String importTree(RepositoryInstance repository, File file, String toPath) throws Exception {\r
+ String importTree(RepositoryInstance repoSession, File file, String toPath) throws Exception {\r
DocumentReader reader = null;\r
DocumentWriter writer = null;\r
- String dump = "NO RESULTS";\r
+ DocumentModel docModel = null;\r
+ ServiceContext<PoxPayloadIn, PoxPayloadOut> ctx = null;\r
+ StringBuffer dump = new StringBuffer("NO RESULTS");\r
try {\r
System.out.println("importTree reading file: "+file+(file!=null ? " exists? "+file.exists() : " file param is null"));\r
reader = new LoggedXMLDirectoryReader(file); //our overload of XMLDirectoryReader.\r
- writer = new DocumentModelWriter(repository, toPath, 10);\r
+ writer = new DocumentModelWriter(repoSession, toPath, 10);\r
DocumentPipe pipe = new DocumentPipeImpl(10);\r
// pipe.addTransformer(transformer);\r
pipe.setReader(reader);\r
pipe.setWriter(writer);\r
- pipe.run();\r
+ DocumentTranslationMap dtm = pipe.run();\r
+ DocumentRef keyDocRef, valueDocRef;\r
+ String docType;\r
+ Map<DocumentRef,DocumentRef> documentRefs = dtm.getDocRefMap();\r
+ if (documentRefs.size() > 0) {\r
+ dump.setLength(0);\r
+ }\r
+ dump.append("<importedRecords>");\r
+ for (Map.Entry entry: documentRefs.entrySet()) {\r
+ keyDocRef = (DocumentRef) entry.getKey();\r
+ valueDocRef = (DocumentRef) entry.getValue();\r
+ if (keyDocRef == null || valueDocRef == null) {\r
+ continue;\r
+ }\r
+ // System.out.println("value="+entry.getValue());\r
+ // System.out.println("key="+entry.getKey());\r
+ \r
+ docModel = repoSession.getDocument((DocumentRef) entry.getValue());\r
+ // System.out.println("value doctype="+docModel.getDocumentType().toString());\r
+\r
+ dump.append("<importedRecord>");\r
+ docModel = repoSession.getDocument(valueDocRef);\r
+ docType = docModel.getDocumentType().getName();\r
+ // System.out.println(docType);\r
+ dump.append("<doctype>"+docType+"</doctype>");\r
+ dump.append("<csid>"+keyDocRef.toString()+"</id>");\r
+ dump.append("</importedRecord>");\r
+ // System.out.println(dump.toString());\r
+\r
+ }\r
+ dump.append("</importedRecords>");\r
+ } catch (Exception e) {\r
+ throw e;\r
} finally {\r
if (reader != null) {\r
+ dump.append("<fullReport>"+(((LoggedXMLDirectoryReader)reader).report())+"</fullReport>");\r
reader.close();\r
- dump = ((LoggedXMLDirectoryReader)reader).report();\r
}\r
if (writer != null) {\r
writer.close();\r
}\r
}\r
- return dump;\r
+ return dump.toString();\r
}\r
}
\ No newline at end of file