[mb-commits] r13665 - in search_server/trunk/servlet/src: main/java/org/musicbrainz/search/servlet/mmd2 test/java/org/musicbrainz/search/servlet

[email protected] Thu, 25 Apr 2013 20:54:54 +0000
Newsgroups gmane.comp.audio.musicbrainz.cvs
Message-ID <E1UVTBu-0006Oj-UA@wiley>
Author: ijabz
Date: 2013-04-25 20:54:39 +0000 (Thu, 25 Apr 2013)
New Revision: 13665

Modified:
   search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/WorkWriter.java
   search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindWorkTest.java
Log:
SEARCH-283#REGRESSION:"-" is returned instead of an empty list when there are no ISWCs for a work

Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/WorkWriter.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/WorkWriter.java	2013-04-25 20:53:17 UTC (rev 13664)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/mmd2/WorkWriter.java	2013-04-25 20:54:39 UTC (rev 13665)
@@ -31,6 +31,7 @@
 import org.musicbrainz.mmd2.*;
 import org.musicbrainz.search.MbDocument;
 import org.musicbrainz.search.index.MMDSerializer;
+import org.musicbrainz.search.index.RecordingIndexField;
 import org.musicbrainz.search.index.WorkIndexField;
 import org.musicbrainz.search.servlet.Result;
 import org.musicbrainz.search.servlet.Results;
@@ -123,9 +124,13 @@
             IswcList iswcList = of.createIswcList();
             for (int i = 0; i < iswcs.length; i++)
             {
-                iswcList.getIswc().add(iswcs[i]);
+                if (isNotNoValue(iswcs[i])) {
+                    iswcList.getIswc().add(iswcs[i]);
+                }
             }
-            work.setIswcList(iswcList);
+            if(iswcList.getIswc().size()>0) {
+                work.setIswcList(iswcList);
+            }
         }
 
         String artistRelation = doc.get(WorkIndexField.ARTIST_RELATION);

Modified: search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindWorkTest.java
===================================================================
--- search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindWorkTest.java	2013-04-25 20:53:17 UTC (rev 13664)
+++ search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindWorkTest.java	2013-04-25 20:54:39 UTC (rev 13665)
@@ -92,6 +92,38 @@
       writer.addDocument(doc.getLuceneDocument());
     }
 
+      {
+          MbDocument doc = new MbDocument();
+          doc.addField(WorkIndexField.WORK_ID, "bba1da16-6a0d-3299-aacf-042f8e13b0b7");
+          doc.addField(WorkIndexField.WORK, "Debaser");
+          doc.addField(WorkIndexField.ARTIST_ID, "789f6768-5830-4b08-8b4f-f38566b2eb1d");
+          doc.addField(WorkIndexField.ARTIST, "Back Francis");
+          doc.addField(WorkIndexField.LYRICS_LANG, "esp");
+          doc.addField(WorkIndexField.TYPE, "Song");
+          doc.addField(WorkIndexField.ALIAS, "Debaser (Clif Norrell mix)");
+          doc.addField(WorkIndexField.ISWC, "-");
+
+
+          RelationList rl = of.createRelationList();
+          rl.setTargetType("artist");
+          {
+              Relation relation = of.createRelation();
+              AttributeList al  = of.createAttributeList();
+              Artist artist = of.createArtist();
+              artist.setId("789f6768-5830-4b08-8b4f-f38566b2eb1d");
+              artist.setName("Black Francis");
+              artist.setSortName("Francis, Black");
+              relation.setArtist(artist);
+              relation.setType("composer");
+              relation.setDirection(DefDirection.BACKWARD);
+              al.getAttribute().add("additional");
+              relation.setAttributeList(al);
+              rl.getRelation().add(relation);
+          }
+          doc.addField(WorkIndexField.ARTIST_RELATION, MMDSerializer.serialize(rl));
+          writer.addDocument(doc.getLuceneDocument());
+      }
+
     {
       MbDocument doc = new MbDocument();
       doc.addField(MetaIndexField.META, MetaIndexField.META_VALUE);
@@ -236,7 +268,28 @@
     assertEquals("Symphony No. 5", doc.get(WorkIndexField.WORK));
   }
 
+    @Test
+    public void testFindWorkByNoISWC() throws Exception {
+        Results res = ss.search("iswc:\\-", 0, 10);
+        assertEquals(1, res.getTotalHits());
+        Result result = res.results.get(0);
+        MbDocument doc = result.getDoc();
+        assertEquals("bba1da16-6a0d-3299-aacf-042f8e13b0b7", doc.get(WorkIndexField.WORK_ID));
+    }
 
+    @Test
+    public void testOutputNoISWCInXml() throws Exception {
+
+        Results res = ss.search("iswc:\\-", 0, 1);
+        ResultsWriter writer = ss.getMmd2Writer();
+        StringWriter sw = new StringWriter();
+        PrintWriter pr = new PrintWriter(sw);
+        writer.write(pr, res,SearchServerServlet.RESPONSE_XML, true);
+        pr.close();
+        String output = sw.toString();
+        System.out.println("Xml is" + output);
+        assertTrue(!output.contains("<iswc>"));
+    }
   /**
    * Tests
    *