[mb-commits] r13696 - in search_server/trunk: index/src/main/java/org/musicbrainz/search/index index/src/test/java/org/musicbrainz/search/index servlet/src/main/java/org/musicbrainz/search/servlet servlet/src/main/resources servlet/src/test/java/org/musicbrainz/search/servlet

[email protected] Wed, 05 Jun 2013 04:51:08 +0000
Newsgroups gmane.comp.audio.musicbrainz.cvs
Message-ID <E1Uk5gi-0006xA-GX@wiley>
Author: ijabz
Date: 2013-06-05 04:51:08 +0000 (Wed, 05 Jun 2013)
New Revision: 13696

Modified:
   search_server/trunk/index/src/main/java/org/musicbrainz/search/index/AreaIndex.java
   search_server/trunk/index/src/main/java/org/musicbrainz/search/index/AreaIndexField.java
   search_server/trunk/index/src/test/java/org/musicbrainz/search/index/AreaIndexTest.java
   search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/AreaDismaxSearch.java
   search_server/trunk/servlet/src/main/resources/oxml.xml
   search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindAreaTest.java
Log:
SEARCH-301:Search for Area by ISO 3166 code

Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/AreaIndex.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/AreaIndex.java	2013-06-04 20:54:22 UTC (rev 13695)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/AreaIndex.java	2013-06-05 04:51:08 UTC (rev 13696)
@@ -101,6 +101,14 @@
                         " WHERE area BETWEEN ? AND ?" +
                         " ORDER BY area, alias, alias_sortname");
 
+        addPreparedStatement("ISO1",
+                "SELECT area, code from iso_3166_1 WHERE area BETWEEN ? AND ? ORDER BY area, code");
+
+        addPreparedStatement("ISO2",
+                "SELECT area, code from iso_3166_2 WHERE area BETWEEN ? AND ? ORDER BY area, code");
+
+        addPreparedStatement("ISO3",
+                "SELECT area, code from iso_3166_3 WHERE area BETWEEN ? AND ? ORDER BY area, code");
     }
 
 
@@ -152,19 +160,79 @@
         }
         rs.close();
 
+        //Iso1Code
+        Map<Integer, Iso31661CodeList> iso1 = new HashMap<Integer, Iso31661CodeList>();
+        st = getPreparedStatement("ISO1");
+        st.setInt(1, min);
+        st.setInt(2, max);
+        rs = st.executeQuery();
+        while (rs.next()) {
+            int areaId = rs.getInt("area");
+            Iso31661CodeList iso1List;
+            if(!iso1.containsKey(areaId)) {
+                iso1List = of.createIso31661CodeList();
+                iso1.put(areaId, iso1List);
+            }
+            else {
+                iso1List = iso1.get(areaId);
+            }
+            iso1List.getIso31661Code().add(rs.getString("code"));
+        }
+
+        //Iso2Code
+        Map<Integer, Iso31662CodeList> iso2 = new HashMap<Integer, Iso31662CodeList>();
+        st = getPreparedStatement("ISO2");
+        st.setInt(1, min);
+        st.setInt(2, max);
+        rs = st.executeQuery();
+        while (rs.next()) {
+            int areaId = rs.getInt("area");
+            Iso31662CodeList iso2List;
+            if(!iso2.containsKey(areaId)) {
+                iso2List = of.createIso31662CodeList();
+                iso2.put(areaId, iso2List);
+            }
+            else {
+                iso2List = iso2.get(areaId);
+            }
+            iso2List.getIso31662Code().add(rs.getString("code"));
+        }
+
+        //Iso3Code
+        Map<Integer, Iso31663CodeList> iso3 = new HashMap<Integer, Iso31663CodeList>();
+        st = getPreparedStatement("ISO3");
+        st.setInt(1, min);
+        st.setInt(2, max);
+        rs = st.executeQuery();
+        while (rs.next()) {
+            int areaId = rs.getInt("area");
+            Iso31663CodeList iso3List;
+            if(!iso3.containsKey(areaId)) {
+                iso3List = of.createIso31663CodeList();
+                iso3.put(areaId, iso3List);
+            }
+            else {
+                iso3List = iso3.get(areaId);
+            }
+            iso3List.getIso31663Code().add(rs.getString("code"));
+        }
+
         st = getPreparedStatement("AREA");
         st.setInt(1, min);
         st.setInt(2, max);
         rs = st.executeQuery();
         while (rs.next()) {
-            indexWriter.addDocument(documentFromResultSet(rs, aliases));
+            indexWriter.addDocument(documentFromResultSet(rs, aliases, iso1, iso2, iso3));
         }
         rs.close();
 
     }
 
     public Document documentFromResultSet(ResultSet rs,
-                                          Map<Integer, Set<Alias>> aliases) throws SQLException {
+                                          Map<Integer, Set<Alias>> aliases,
+                                          Map<Integer, Iso31661CodeList> iso1,
+                                          Map<Integer, Iso31662CodeList> iso2,
+                                          Map<Integer, Iso31663CodeList> iso3) throws SQLException {
         MbDocument doc = new MbDocument();
 
         ObjectFactory of = new ObjectFactory();
@@ -226,6 +294,31 @@
             area.setAliasList(aliasList);
         }
 
+        if(iso1.containsKey(areaId)) {
+            area.setIso31661CodeList(iso1.get(areaId));
+            for(String iso:iso1.get(areaId).getIso31661Code()) {
+                doc.addField(AreaIndexField.ISO, iso);
+                doc.addField(AreaIndexField.ISO1, iso);
+            }
+
+        }
+
+        if(iso2.containsKey(areaId)) {
+            area.setIso31662CodeList(iso2.get(areaId));
+            for(String iso:iso2.get(areaId).getIso31662Code()) {
+                doc.addField(AreaIndexField.ISO, iso);
+                doc.addField(AreaIndexField.ISO2, iso);
+            }
+        }
+
+        if(iso3.containsKey(areaId)) {
+            area.setIso31663CodeList(iso3.get(areaId));
+            for(String iso:iso3.get(areaId).getIso31663Code()) {
+                doc.addField(AreaIndexField.ISO, iso);
+                doc.addField(AreaIndexField.ISO3, iso);
+            }
+        }
+
         String store = MMDSerializer.serialize(areaList);
         doc.addField(AreaIndexField.AREA_STORE, store);
         return doc.getLuceneDocument();

Modified: search_server/trunk/index/src/main/java/org/musicbrainz/search/index/AreaIndexField.java
===================================================================
--- search_server/trunk/index/src/main/java/org/musicbrainz/search/index/AreaIndexField.java	2013-06-04 20:54:22 UTC (rev 13695)
+++ search_server/trunk/index/src/main/java/org/musicbrainz/search/index/AreaIndexField.java	2013-06-05 04:51:08 UTC (rev 13696)
@@ -48,6 +48,10 @@
     END			("end",			MusicBrainzFieldTypes.TEXT_NOT_STORED_NOT_ANALYZED_NO_NORMS, new KeywordAnalyzer()),
     ENDED       ("ended",       MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
     SORTNAME    ("sortname",    MusicBrainzFieldTypes.TEXT_STORED_ANALYZED, new MusicbrainzAnalyzer()),
+    ISO		    ("iso",		    MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+    ISO1		("iso1",		MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+    ISO2		("iso2",		MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
+    ISO3		("iso3",		MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
     TYPE		("type",		MusicBrainzFieldTypes.TEXT_NOT_STORED_ANALYZED_NO_NORMS, new CaseInsensitiveKeywordAnalyzer()),
     AREA_STORE  ("areastore",   MusicBrainzFieldTypes.TEXT_STORED_NOT_INDEXED),
     ;

Modified: search_server/trunk/index/src/test/java/org/musicbrainz/search/index/AreaIndexTest.java
===================================================================
--- search_server/trunk/index/src/test/java/org/musicbrainz/search/index/AreaIndexTest.java	2013-06-04 20:54:22 UTC (rev 13695)
+++ search_server/trunk/index/src/test/java/org/musicbrainz/search/index/AreaIndexTest.java	2013-06-05 04:51:08 UTC (rev 13696)
@@ -40,7 +40,10 @@
         stmt.addBatch("INSERT INTO area (id, gid,name,sort_name, type, begin_date_year, end_date_year) VALUES (1, 'aa95182f-df0a-3ad6-8bfb-4b63482cd276', 'Afghanistan','Afghanistan',1,1830,2020)");
         stmt.addBatch("INSERT INTO area_type(id, name) VALUES (1, 'Country')");
         stmt.addBatch("INSERT INTO area_alias (id, area, sort_name, name, primary_for_locale, locale, type ) VALUES (3, 1, 'Afghan', 'Afghany', true, 'en',1)");
-
+        stmt.addBatch("INSERT INTO iso_3166_1(area, code) VALUES (1,'AF')");
+        stmt.addBatch("INSERT INTO iso_3166_2(area, code) VALUES (1,'North')");
+        stmt.addBatch("INSERT INTO iso_3166_2(area, code) VALUES (1,'West')");
+        stmt.addBatch("INSERT INTO iso_3166_3(area, code) VALUES (1,'Kabu')");
         stmt.executeBatch();
         stmt.close();
     }
@@ -142,6 +145,70 @@
     }
 
     @Test
+    public void testIndexAreaIso1() throws Exception {
+
+        addAreaOne();
+        RAMDirectory ramDir = new RAMDirectory();
+        createIndex(ramDir);
+
+        IndexReader ir = DirectoryReader.open(ramDir);
+        assertEquals(2, ir.numDocs());
+        {
+            checkTerm(ir, AreaIndexField.ISO1, "af");
+
+        }
+        ir.close();
+    }
+
+    @Test
+    public void testIndexAreaIso2() throws Exception {
+
+        addAreaOne();
+        RAMDirectory ramDir = new RAMDirectory();
+        createIndex(ramDir);
+
+        IndexReader ir = DirectoryReader.open(ramDir);
+        assertEquals(2, ir.numDocs());
+        {
+            checkTerm(ir, AreaIndexField.ISO2, "north");
+
+        }
+        ir.close();
+    }
+
+    @Test
+    public void testIndexAreaIso3() throws Exception {
+
+        addAreaOne();
+        RAMDirectory ramDir = new RAMDirectory();
+        createIndex(ramDir);
+
+        IndexReader ir = DirectoryReader.open(ramDir);
+        assertEquals(2, ir.numDocs());
+        {
+            checkTerm(ir, AreaIndexField.ISO3, "kabu");
+
+        }
+        ir.close();
+    }
+
+    @Test
+    public void testIndexAreaIso() throws Exception {
+
+        addAreaOne();
+        RAMDirectory ramDir = new RAMDirectory();
+        createIndex(ramDir);
+
+        IndexReader ir = DirectoryReader.open(ramDir);
+        assertEquals(2, ir.numDocs());
+        {
+            checkTerm(ir, AreaIndexField.ISO, "af");
+
+        }
+        ir.close();
+    }
+
+    @Test
     public void testStoredIndexArea() throws Exception {
 
         addAreaOne();
@@ -174,6 +241,17 @@
             assertEquals("2020",lifeSpan.getEnd());
             assertEquals("false",lifeSpan.getEnded());
 
+            assertNotNull(area.getIso31661CodeList());
+            assertEquals("AF", area.getIso31661CodeList().getIso31661Code().get(0));
+
+            assertNotNull(area.getIso31662CodeList());
+            assertEquals("North", area.getIso31662CodeList().getIso31662Code().get(0));
+            assertEquals("West", area.getIso31662CodeList().getIso31662Code().get(1));
+
+            assertNotNull(area.getIso31663CodeList());
+            assertEquals("Kabu", area.getIso31663CodeList().getIso31663Code().get(0));
+
+
         }
         ir.close();
     }

Modified: search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/AreaDismaxSearch.java
===================================================================
--- search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/AreaDismaxSearch.java	2013-06-04 20:54:22 UTC (rev 13695)
+++ search_server/trunk/servlet/src/main/java/org/musicbrainz/search/servlet/AreaDismaxSearch.java	2013-06-05 04:51:08 UTC (rev 13696)
@@ -41,7 +41,9 @@
     Map<String, DismaxAlias.AliasField> fieldBoosts = new HashMap<String, DismaxAlias.AliasField>(3);
     fieldBoosts.put(AreaIndexField.AREA.getName(), new DismaxAlias.AliasField(true, 1.3f));
     fieldBoosts.put(AreaIndexField.SORTNAME.getName(), new DismaxAlias.AliasField(true, 1.1f));
-    //fieldBoosts.put(AreaIndexField.ALIAS.getName(), new DismaxAlias.AliasField(true, 0.9f));
+    fieldBoosts.put(AreaIndexField.ALIAS.getName(), new DismaxAlias.AliasField(true, 0.9f));
+    fieldBoosts.put(AreaIndexField.ISO.getName(), new DismaxAlias.AliasField(true, 0.9f));
+
     DismaxAlias dismaxAlias = new DismaxAlias();
     dismaxAlias.setFields(fieldBoosts);
     dismaxAlias.setTie(0.1f);

Modified: search_server/trunk/servlet/src/main/resources/oxml.xml
===================================================================
--- search_server/trunk/servlet/src/main/resources/oxml.xml	2013-06-04 20:54:22 UTC (rev 13695)
+++ search_server/trunk/servlet/src/main/resources/oxml.xml	2013-06-05 04:51:08 UTC (rev 13696)
@@ -38,6 +38,16 @@
                 <xml-element java-attribute="iso31661CodeList" xml-path="."/>
             </java-attributes>
         </java-type>
+        <java-type name="DefAreaElementInner">
+            <java-attributes>
+                <xml-element java-attribute="iso31662CodeList" xml-path="."/>
+            </java-attributes>
+        </java-type>
+        <java-type name="DefAreaElementInner">
+            <java-attributes>
+                <xml-element java-attribute="iso31663CodeList" xml-path="."/>
+            </java-attributes>
+        </java-type>
         <java-type name="Metadata">
             <java-attributes>
                 <xml-element java-attribute="releaseList" xml-path="."/>
@@ -353,5 +363,15 @@
                 <xml-element java-attribute="iso31661Code" name="iso-3166-1-codes"/>
             </java-attributes>
         </java-type>
+        <java-type name="Iso31662CodeList">
+            <java-attributes>
+                <xml-element java-attribute="iso31662Code" name="iso-3166-2-codes"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="Iso31663CodeList">
+            <java-attributes>
+                <xml-element java-attribute="iso31663Code" name="iso-3166-3-codes"/>
+            </java-attributes>
+        </java-type>
     </java-types>
 </xml-bindings>

Modified: search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindAreaTest.java
===================================================================
--- search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindAreaTest.java	2013-06-04 20:54:22 UTC (rev 13695)
+++ search_server/trunk/servlet/src/test/java/org/musicbrainz/search/servlet/FindAreaTest.java	2013-06-05 04:51:08 UTC (rev 13696)
@@ -71,14 +71,32 @@
             lifespan.setEnd("2004");
             lifespan.setEnded("true");
 
-            /*
-            doc.addField(AreaIndexField.CODE, 1234);
-            area.setAreaCode(BigInteger.valueOf(1234));
+            doc.addField(AreaIndexField.TYPE,"Country");
+            area.setType("Country");
 
 
-           */
-            area.setType("Country");
+            Iso31661CodeList iso1 = of.createIso31661CodeList();
+            iso1.getIso31661Code().add("AF");
+            doc.addField(AreaIndexField.ISO1,"AF");
+            doc.addField(AreaIndexField.ISO,"AF");
 
+            area.setIso31661CodeList(iso1);
+
+            Iso31662CodeList iso2 = of.createIso31662CodeList();
+            iso2.getIso31662Code().add("North");
+            doc.addField(AreaIndexField.ISO2,"North");
+            doc.addField(AreaIndexField.ISO,"North");
+
+            area.setIso31662CodeList(iso2);
+
+            Iso31663CodeList iso3 = of.createIso31663CodeList();
+            iso3.getIso31663Code().add("Kabu");
+            doc.addField(AreaIndexField.ISO3,"Kabu");
+            doc.addField(AreaIndexField.ISO,"Kabu");
+
+            area.setIso31663CodeList(iso3);
+
+
             AreaList areaList = of.createAreaList();
             areaList.getArea().add(area);
             doc.addField(AreaIndexField.AREA_STORE, MMDSerializer.serialize(areaList));
@@ -144,6 +162,16 @@
     }
 
     @Test
+    public void testFindAreaByType() throws Exception {
+        Results res = ss.search("type:\"Country\"", 0, 10);
+        assertEquals(1, res.getTotalHits());
+        Result result = res.results.get(0);
+        MbDocument doc = result.getDoc();
+        assertEquals("ff571ff4-04cb-4b9c-8a1c-354c330f863c", doc.get(AreaIndexField.AREA_ID));
+        assertEquals("Afghanistan", doc.get(AreaIndexField.AREA));
+    }
+
+    @Test
     public void testFindAreaByBegin() throws Exception {
         Results res = ss.search("begin:1993", 0, 10);
         assertEquals(1, res.getTotalHits());
@@ -174,6 +202,47 @@
     }
 
     @Test
+    public void testFindAreaByIso1() throws Exception {
+        Results res = ss.search("iso1:af", 0, 10);
+        assertEquals(1, res.getTotalHits());
+        Result result = res.results.get(0);
+        MbDocument doc = result.getDoc();
+        assertEquals("ff571ff4-04cb-4b9c-8a1c-354c330f863c", doc.get(AreaIndexField.AREA_ID));
+        assertEquals("Afghanistan", doc.get(AreaIndexField.AREA));
+    }
+
+    @Test
+    public void testFindAreaByIso2() throws Exception {
+        Results res = ss.search("iso2:north", 0, 10);
+        assertEquals(1, res.getTotalHits());
+        Result result = res.results.get(0);
+        MbDocument doc = result.getDoc();
+        assertEquals("ff571ff4-04cb-4b9c-8a1c-354c330f863c", doc.get(AreaIndexField.AREA_ID));
+        assertEquals("Afghanistan", doc.get(AreaIndexField.AREA));
+    }
+
+
+    @Test
+    public void testFindAreaByIso3() throws Exception {
+        Results res = ss.search("iso3:kabu", 0, 10);
+        assertEquals(1, res.getTotalHits());
+        Result result = res.results.get(0);
+        MbDocument doc = result.getDoc();
+        assertEquals("ff571ff4-04cb-4b9c-8a1c-354c330f863c", doc.get(AreaIndexField.AREA_ID));
+        assertEquals("Afghanistan", doc.get(AreaIndexField.AREA));
+    }
+
+    @Test
+    public void testFindAreaByIso() throws Exception {
+        Results res = ss.search("iso:af", 0, 10);
+        assertEquals(1, res.getTotalHits());
+        Result result = res.results.get(0);
+        MbDocument doc = result.getDoc();
+        assertEquals("ff571ff4-04cb-4b9c-8a1c-354c330f863c", doc.get(AreaIndexField.AREA_ID));
+        assertEquals("Afghanistan", doc.get(AreaIndexField.AREA));
+    }
+
+    @Test
     public void testFindAreaByDismax1() throws Exception {
         Results res = sd.search("Afghanistan", 0, 10);
         assertEquals(1, res.getTotalHits());
@@ -183,7 +252,25 @@
         assertEquals("Afghanistan", doc.get(AreaIndexField.AREA));
     }
 
+    @Test
+    public void testFindAreaByDismax2() throws Exception {
+        Results res = sd.search("afghany", 0, 10);
+        assertEquals(1, res.getTotalHits());
+        Result result = res.results.get(0);
+        MbDocument doc = result.getDoc();
+        assertEquals("ff571ff4-04cb-4b9c-8a1c-354c330f863c", doc.get(AreaIndexField.AREA_ID));
+        assertEquals("Afghanistan", doc.get(AreaIndexField.AREA));
+    }
 
+    @Test
+    public void testFindAreaByDismax3() throws Exception {
+        Results res = sd.search("af", 0, 10);
+        assertEquals(1, res.getTotalHits());
+        Result result = res.results.get(0);
+        MbDocument doc = result.getDoc();
+        assertEquals("ff571ff4-04cb-4b9c-8a1c-354c330f863c", doc.get(AreaIndexField.AREA_ID));
+        assertEquals("Afghanistan", doc.get(AreaIndexField.AREA));
+    }
     /**
      * Tests get same results as
      * http://musicbrainz.org/ws/1/area/?type=xml&query=%22Jockey%20Slut%22
@@ -213,9 +300,27 @@
         assertTrue(output.contains("<begin>1993</begin"));
         assertTrue(output.contains("<end>2004</end>"));
         assertTrue(output.contains("<ended>true</ended>"));
+        assertTrue(output.contains("<iso-3166-1-code-list><iso-3166-1-code>AF</iso-3166-1-code>"));
+        assertTrue(output.contains("<iso-3166-2-code-list><iso-3166-2-code>North</iso-3166-2-code>"));
+        assertTrue(output.contains("<iso-3166-3-code-list><iso-3166-3-code>Kabu</iso-3166-3-code>"));
 
+
     }
 
+    @Test
+    public void testOutputAsXmlIdent() throws Exception {
+
+        Results res = ss.search("area:\"Afghanistan\"", 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("count=\"1\""));
+    }
+
     /**
      * @throws Exception exception
      */
@@ -238,9 +343,11 @@
         assertTrue(output.contains("\"type\":\"Country\""));
         assertTrue(output.contains("name\":\"Afghanistan\""));
         assertTrue(output.contains("\"sort-name\":\"Afghanistan\""));
-
         assertTrue(output.contains("life-span\":{\"begin\":\"1993\""));
         assertTrue(output.contains("\"ended\":\"true\""));
+        assertTrue(output.contains("\"iso-3166-1-code-list\":{\"iso-3166-1-code\":[\"AF\"]}"));
+        assertTrue(output.contains("\"iso-3166-2-code-list\":{\"iso-3166-2-code\":[\"North\"]}"));
+        assertTrue(output.contains("\"iso-3166-3-code-list\":{\"iso-3166-3-code\":[\"Kabu\"]}"));
 
     }
 
@@ -268,7 +375,28 @@
         assertTrue(output.contains("life-span\":{\"begin\":\"1993\""));
         assertTrue(output.contains("\"ended\":true"));
         assertTrue(output.contains("\"end\":\"2004\""));
+        assertTrue(output.contains("\"iso-3166-1-codes\":[\"AF\"]"));
+        assertTrue(output.contains("\"iso-3166-2-codes\":[\"North\"]"));
+        assertTrue(output.contains("\"iso-3166-3-codes\":[\"Kabu\"]"));
+    }
 
+    /**
+     * @throws Exception exception
+     */
+    @Test
+    public void testOutputJsonNewIdent() throws Exception {
+
+        Results res = ss.search("area:\"Afghanistan\"", 0, 10);
+        org.musicbrainz.search.servlet.mmd2.ResultsWriter writer = ss.getMmd2Writer();
+        StringWriter sw = new StringWriter();
+        PrintWriter pr = new PrintWriter(sw);
+        writer.write(pr, res, SearchServerServlet.RESPONSE_JSON_NEW, true);
+        pr.close();
+
+        String output = sw.toString();
+        System.out.println("Json New Ident is" + output);
+        assertTrue(output.contains("\"offset\" : 0"));
+
     }
 
 }
\ No newline at end of file