]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-4814: Attempt to improve usefulness of reporting of records successfully imported.
authorAron Roberts <aron@socrates.berkeley.edu>
Wed, 4 Apr 2012 04:09:05 +0000 (21:09 -0700)
committerAron Roberts <aron@socrates.berkeley.edu>
Wed, 4 Apr 2012 04:09:05 +0000 (21:09 -0700)
services/IntegrationTests/src/test/resources/test-data/xmlreplay/imports/import-1objectexit-post-form.xml [new file with mode: 0644]
services/IntegrationTests/src/test/resources/test-data/xmlreplay/imports/imports.xml
services/IntegrationTests/src/test/resources/test-data/xmlreplay/imports/res/import-1objectexit-post.res.xml
services/imports/service/src/main/java/org/collectionspace/services/imports/ImportsResource.java
services/imports/service/src/main/java/org/collectionspace/services/imports/nuxeo/ImportCommand.java

diff --git a/services/IntegrationTests/src/test/resources/test-data/xmlreplay/imports/import-1objectexit-post-form.xml b/services/IntegrationTests/src/test/resources/test-data/xmlreplay/imports/import-1objectexit-post-form.xml
new file mode 100644 (file)
index 0000000..209ad37
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<imports>
+  <import service="ObjectExit" type="ObjectExit">
+    <schema xmlns:objectexit_common="http://collectionspace.org/services/objectexit" 
+      name="objectexit_common">
+      <exitNote>Sebastián &amp; Barnes</exitNote>
+      <exitNumber>OE2010.2</exitNumber>
+    </schema>
+  </import>
+</imports>
index f18748973bca81630999b494890352abc2b35e7d..c19fd849e98f9c5249af99d65617bd7dea6363dd 100644 (file)
             <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>
index 7a312408d7bdad2ee444160519292e3d2c2f092f..294dbc5ae6ff891bd38e5f16d75cf7c8ff889b39 100644 (file)
@@ -1,7 +1,3 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<document name="collectionobjects">
-  <ns2:collectionobjects_common
-    xmlns:ns2="http://collectionspace.org/services/collectionobject">
-    <objectNumber>6.0221415</objectNumber>
-  </ns2:collectionobjects_common>
-</document>
+<?xml version="1.0"?><import><msg>SUCCESS</msg><report>READ: Variable path value here
+/ObjectExit/Variable CSID value here
+</report></import>
\ No newline at end of file
index 6fc0db06c10b8958a6fda3f6a8b0dd76af7b8c43..abdf68af43b00644b665d9fb532f932806ad098f 100644 (file)
@@ -147,7 +147,7 @@ public class ImportsResource extends ResourceBase {
             String inputFilename = payloadToFilename(xmlPayload);
             result = createFromFilename(inputFilename);
             rb = javax.ws.rs.core.Response.ok();
-           } catch (Exception e) {
+       } catch (Exception e) {
             result = Tools.errorToString(e, true);
             rb = javax.ws.rs.core.Response.status(javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR);
         }
@@ -334,7 +334,7 @@ public class ImportsResource extends ResourceBase {
        } catch (Exception e) {
                throw bigReThrow(e, ServiceMessages.CREATE_FAILED);
        }
-               return response;
+       return response;
     }
 
     String page = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
index a8097fc3f3c507661863735f5d564bd76bc085cc..9204102fedd10993fe67082e79e41aa15808b0e0 100644 (file)
@@ -1,13 +1,21 @@
 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
@@ -24,34 +32,70 @@ public class ImportCommand {
         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