You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by am...@apache.org on 2016/02/02 14:21:22 UTC

[4/7] lens git commit: LENS-920 : Fix issues in producing and consuming json for all api

http://git-wip-us.apache.org/repos/asf/lens/blob/d559ef2e/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java
----------------------------------------------------------------------
diff --git a/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java b/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java
index 925fc86..4bc3f0a 100644
--- a/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java
+++ b/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java
@@ -29,10 +29,7 @@ import javax.ws.rs.BadRequestException;
 import javax.ws.rs.NotFoundException;
 import javax.ws.rs.client.Entity;
 import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.GenericType;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
+import javax.ws.rs.core.*;
 import javax.xml.bind.JAXBElement;
 import javax.xml.datatype.DatatypeFactory;
 import javax.xml.datatype.XMLGregorianCalendar;
@@ -44,6 +41,7 @@ import org.apache.lens.api.LensSessionHandle;
 import org.apache.lens.api.StringList;
 import org.apache.lens.api.error.LensCommonErrorCode;
 import org.apache.lens.api.metastore.*;
+import org.apache.lens.api.metastore.ObjectFactory;
 import org.apache.lens.api.result.LensAPIResult;
 import org.apache.lens.cube.metadata.*;
 import org.apache.lens.cube.metadata.ExprColumn.ExprSpec;
@@ -62,15 +60,9 @@ import org.apache.hadoop.hive.metastore.api.FieldSchema;
 import org.apache.hadoop.hive.ql.session.SessionState;
 import org.apache.hadoop.mapred.SequenceFileInputFormat;
 
-import org.glassfish.jersey.client.ClientConfig;
-import org.glassfish.jersey.media.multipart.FormDataBodyPart;
-import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
-import org.glassfish.jersey.media.multipart.FormDataMultiPart;
-import org.glassfish.jersey.media.multipart.MultiPartFeature;
+import org.glassfish.jersey.test.TestProperties;
 import org.testng.Assert;
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
+import org.testng.annotations.*;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
@@ -80,8 +72,6 @@ import lombok.extern.slf4j.Slf4j;
 @Test(groups = "unit-test")
 public class TestMetastoreService extends LensJerseyTest {
   private ObjectFactory cubeObjectFactory;
-  protected String mediaType = MediaType.APPLICATION_XML;
-  protected MediaType medType = MediaType.APPLICATION_XML_TYPE;
   protected String dbPFX = "TestMetastoreService_";
   CubeMetastoreServiceImpl metastoreService;
   LensSessionHandle lensSessionId;
@@ -90,7 +80,7 @@ public class TestMetastoreService extends LensJerseyTest {
     assertEquals(result.getStatus(), Status.SUCCEEDED, String.valueOf(result));
   }
 
-  @BeforeTest
+  @BeforeMethod
   public void setUp() throws Exception {
     super.setUp();
     cubeObjectFactory = new ObjectFactory();
@@ -99,7 +89,7 @@ public class TestMetastoreService extends LensJerseyTest {
 
   }
 
-  @AfterTest
+  @AfterMethod
   public void tearDown() throws Exception {
     metastoreService.closeSession(lensSessionId);
     super.tearDown();
@@ -107,62 +97,67 @@ public class TestMetastoreService extends LensJerseyTest {
 
   @Override
   protected Application configure() {
+    enable(TestProperties.LOG_TRAFFIC);
+    enable(TestProperties.DUMP_ENTITY);
     return new MetastoreApp();
   }
 
-  @Override
-  protected void configureClient(ClientConfig config) {
-    config.register(MultiPartFeature.class);
-  }
-
-  @Test
-  public void testSetDatabase() throws Exception {
-    WebTarget dbTarget = target().path("metastore").path("databases/current");
-    String dbName = "test_set_db";
+  @Test(dataProvider = "mediaTypeData")
+  public void testSetDatabase(MediaType mediaType) throws Exception {
+    String prevDb = getCurrentDatabase(mediaType);
+    String dbName = "test_set_db" + mediaType.getSubtype();
     try {
-      dbTarget.queryParam("sessionid", lensSessionId).request(mediaType).put(Entity.xml(dbName), APIResult.class);
-      fail("Should get 404");
-    } catch (NotFoundException e) {
-      // expected
-    }
+      WebTarget dbTarget = target().path("metastore").path("databases/current");
+      try {
+        dbTarget.queryParam("sessionid", lensSessionId).request(mediaType).put(getEntityForString(dbName, mediaType),
+          APIResult.class);
+        fail("Should get 404");
+      } catch (NotFoundException e) {
+        // expected
+      }
 
-    // create
-    APIResult result = target().path("metastore").path("databases")
-      .queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(dbName), APIResult.class);
-    assertNotNull(result);
-    assertSuccess(result);
+      // create
+      APIResult result = target().path("metastore").path("databases")
+        .queryParam("sessionid", lensSessionId).request(mediaType).post(getEntityForString(dbName, mediaType), APIResult
+          .class);
+      assertNotNull(result);
+      assertSuccess(result);
 
-    // set
-    result = dbTarget.queryParam("sessionid", lensSessionId).request(mediaType)
-      .put(Entity.xml(dbName), APIResult.class);
-    assertNotNull(result);
-    assertSuccess(result);
+      // set
+      result = dbTarget.queryParam("sessionid", lensSessionId).request(mediaType)
+        .put(getEntityForString(dbName, mediaType), APIResult.class);
+      assertNotNull(result);
+      assertSuccess(result);
 
-    // set without session id, we should get bad request
-    try {
-      dbTarget.request(mediaType).put(Entity.xml(dbName), APIResult.class);
-      fail("Should have thrown bad request exception");
-    } catch (BadRequestException badReq) {
-      // expected
-    }
+      // set without session id, we should get bad request
+      try {
+        dbTarget.request(mediaType).put(getEntityForString(dbName, mediaType), APIResult.class);
+        fail("Should have thrown bad request exception");
+      } catch (BadRequestException badReq) {
+        // expected
+      }
 
-    String current = dbTarget.queryParam("sessionid", lensSessionId).request(mediaType).get(String.class);
-    assertEquals(current, dbName);
+      String current = dbTarget.queryParam("sessionid", lensSessionId).request(mediaType).get(String.class);
+      assertEquals(current, dbName);
+    } finally {
+      setCurrentDatabase(prevDb, mediaType);
+      dropDatabase(dbName, mediaType);
+    }
   }
 
-  @Test
-  public void testCreateDatabase() throws Exception {
-    final String newDb = dbPFX + "new_db";
+  @Test(dataProvider = "mediaTypeData")
+  public void testCreateDatabase(MediaType mediaType) throws Exception {
+    final String newDb = dbPFX + "new_db" + mediaType.getSubtype();
     WebTarget dbTarget = target().path("metastore").path("databases");
 
     APIResult result = dbTarget.queryParam("sessionid", lensSessionId).request(mediaType)
-      .post(Entity.xml(newDb), APIResult.class);
+      .post(getEntityForString(newDb, mediaType), APIResult.class);
     assertNotNull(result);
     assertSuccess(result);
 
     // Create again
     result = dbTarget.queryParam("sessionid", lensSessionId).queryParam("ignoreIfExisting", false)
-      .request(mediaType).post(Entity.xml(newDb), APIResult.class);
+      .request(mediaType).post(getEntityForString(newDb, mediaType), APIResult.class);
     assertEquals(result.getStatus(), APIResult.Status.FAILED);
     log.info(">> Result message " + result.getMessage());
 
@@ -170,13 +165,13 @@ public class TestMetastoreService extends LensJerseyTest {
     dbTarget.path(newDb).queryParam("sessionid", lensSessionId).request().delete();
   }
 
-  @Test
-  public void testDropDatabase() throws Exception {
-    final String dbName = dbPFX + "del_db";
+  @Test(dataProvider = "mediaTypeData")
+  public void testDropDatabase(MediaType mediaType) throws Exception {
+    final String dbName = dbPFX + "del_db" + mediaType.getSubtype();
     final WebTarget dbTarget = target().path("metastore").path("databases");
     // First create the database
     APIResult create = dbTarget.queryParam("sessionid", lensSessionId).request(mediaType)
-      .post(Entity.xml(dbName), APIResult.class);
+      .post(getEntityForString(dbName, mediaType), APIResult.class);
     assertSuccess(create);
 
     // Now drop it
@@ -186,16 +181,16 @@ public class TestMetastoreService extends LensJerseyTest {
     assertSuccess(drop);
   }
 
-  @Test
-  public void testGetAllDatabases() throws Exception {
-    final String[] dbsToCreate = {"db_1", "db_2", "db_3"};
+  @Test(dataProvider = "mediaTypeData")
+  public void testGetAllDatabases(MediaType mediaType) throws Exception {
+    final String[] dbsToCreate = {"db_1" + mediaType.getSubtype(),
+      "db_2" + mediaType.getSubtype(), "db_3" + mediaType.getSubtype(), };
     final WebTarget dbTarget = target().path("metastore").path("databases");
 
     for (String name : dbsToCreate) {
-      dbTarget.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(name));
+      dbTarget.queryParam("sessionid", lensSessionId).request(mediaType).post(getEntityForString(name, mediaType));
     }
 
-
     StringList allDbs = target().path("metastore").path("databases")
       .queryParam("sessionid", lensSessionId).request(mediaType)
       .get(StringList.class);
@@ -216,16 +211,16 @@ public class TestMetastoreService extends LensJerseyTest {
     }
   }
 
-  private void createDatabase(String dbName) throws Exception {
+  private void createDatabase(String dbName, MediaType mediaType) throws Exception {
     WebTarget dbTarget = target().path("metastore").path("databases");
 
     APIResult result = dbTarget.queryParam("sessionid", lensSessionId).request(mediaType)
-      .post(Entity.xml(dbName), APIResult.class);
+      .post(getEntityForString(dbName, mediaType), APIResult.class);
     assertNotNull(result);
     assertSuccess(result);
   }
 
-  private void createStorage(String storageName) throws Exception {
+  private void createStorage(String storageName, MediaType mediaType) throws Exception {
     WebTarget target = target().path("metastore").path("storages");
 
     XStorage xs = new XStorage();
@@ -237,13 +232,15 @@ public class TestMetastoreService extends LensJerseyTest {
     prop.setValue("prop1.value");
     xs.getProperties().getProperty().add(prop);
 
-    APIResult result = target.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(
-      cubeObjectFactory.createXStorage(xs)), APIResult.class);
+    APIResult result = target.queryParam("sessionid", lensSessionId).request(mediaType).post(
+      Entity.entity(new GenericEntity<JAXBElement<XStorage>>(cubeObjectFactory.createXStorage(xs)) {
+      }, mediaType),
+      APIResult.class);
     assertNotNull(result);
     assertSuccess(result);
   }
 
-  private void dropStorage(String storageName) throws Exception {
+  private void dropStorage(String storageName, MediaType mediaType) throws Exception {
     WebTarget target = target().path("metastore").path("storages").path(storageName);
 
     APIResult result = target
@@ -251,7 +248,7 @@ public class TestMetastoreService extends LensJerseyTest {
     assertSuccess(result);
   }
 
-  private void dropDatabase(String dbName) throws Exception {
+  private void dropDatabase(String dbName, MediaType mediaType) throws Exception {
     WebTarget dbTarget = target().path("metastore").path("databases").path(dbName);
 
     APIResult result = dbTarget.queryParam("cascade", "true")
@@ -259,14 +256,14 @@ public class TestMetastoreService extends LensJerseyTest {
     assertSuccess(result);
   }
 
-  private void setCurrentDatabase(String dbName) throws Exception {
+  private void setCurrentDatabase(String dbName, MediaType mediaType) throws Exception {
     WebTarget dbTarget = target().path("metastore").path("databases/current");
-    APIResult result = dbTarget.queryParam("sessionid", lensSessionId).request(mediaType).put(Entity.xml(dbName),
-      APIResult.class);
+    APIResult result = dbTarget.queryParam("sessionid", lensSessionId).request(mediaType)
+      .put(getEntityForString(dbName, mediaType), APIResult.class);
     assertSuccess(result);
   }
 
-  private String getCurrentDatabase() throws Exception {
+  private String getCurrentDatabase(MediaType mediaType) throws Exception {
     return target().path("metastore").path("databases/current")
       .queryParam("sessionid", lensSessionId).request(mediaType).get(String.class);
   }
@@ -462,25 +459,27 @@ public class TestMetastoreService extends LensJerseyTest {
     }
   }
 
-  @Test
-  public void testCreateCube() throws Exception {
-    final String DB = dbPFX + "test_create_cube";
-    String prevDb = getCurrentDatabase();
-    createDatabase(DB);
-    setCurrentDatabase(DB);
+  @Test(dataProvider = "mediaTypeData")
+  public void testCreateCube(MediaType mediaType) throws Exception {
+    final String DB = dbPFX + "test_create_cube" + mediaType.getSubtype();
+    String prevDb = getCurrentDatabase(mediaType);
+    createDatabase(DB, mediaType);
+    setCurrentDatabase(DB, mediaType);
     try {
       final XCube cube = createTestCube("testCube1");
       final WebTarget target = target().path("metastore").path("cubes");
       APIResult result;
       try {
         // first try without a session id
-        target.request(mediaType).post(Entity.xml(cubeObjectFactory.createXCube(cube)), APIResult.class);
+        target.request(mediaType).post(Entity.entity(new GenericEntity<JAXBElement<XCube>>(
+          cubeObjectFactory.createXCube(cube)){}, mediaType), APIResult.class);
         fail("Should have thrown bad request exception");
       } catch (BadRequestException badReq) {
         // expected
       }
       result = target.queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXCube(cube)), APIResult.class);
+        .post(Entity.entity(new GenericEntity<JAXBElement<XCube>>(cubeObjectFactory.createXCube(cube)){}, mediaType),
+          APIResult.class);
       assertNotNull(result);
       assertSuccess(result);
 
@@ -490,14 +489,16 @@ public class TestMetastoreService extends LensJerseyTest {
       // create invalid derived cube
       XCube dcube = createDerivedCube("testderived", "testCube1", true);
       result = target.queryParam("sessionid", lensSessionId).request(
-        mediaType).post(Entity.xml(cubeObjectFactory.createXCube(dcube)), APIResult.class);
+        mediaType).post(Entity.entity(new GenericEntity<JAXBElement<XCube>>(cubeObjectFactory.createXCube(dcube)){},
+        mediaType), APIResult.class);
       assertEquals(result.getStatus(), Status.FAILED);
       assertEquals(result.getMessage(), "Problem in submitting entity: Derived cube invalid: Measures "
         + "[random_measure] and Dim Attributes [random_dim] were not present in parent cube testcube1");
       // create derived cube
       dcube = createDerivedCube("testderived", "testCube1", false);
       result = target.queryParam("sessionid", lensSessionId).request(
-        mediaType).post(Entity.xml(cubeObjectFactory.createXCube(dcube)), APIResult.class);
+        mediaType).post(Entity.entity(new GenericEntity<JAXBElement<XCube>>(cubeObjectFactory.createXCube(dcube)){},
+        mediaType), APIResult.class);
       assertNotNull(result);
       assertSuccess(result);
 
@@ -528,7 +529,8 @@ public class TestMetastoreService extends LensJerseyTest {
       qcube.getProperties().getProperty().add(xp);
 
       result = target.queryParam("sessionid", lensSessionId).request(
-        mediaType).post(Entity.xml(cubeObjectFactory.createXCube(qcube)), APIResult.class);
+        mediaType).post(Entity.entity(new GenericEntity<JAXBElement<XCube>>(cubeObjectFactory.createXCube(qcube)){},
+        mediaType), APIResult.class);
       assertNotNull(result);
       assertSuccess(result);
 
@@ -546,12 +548,11 @@ public class TestMetastoreService extends LensJerseyTest {
         LensUtil.<String, Boolean>getHashMap("testCube1", true, "testderived", true, "testNoQueryCube", false));
 
     } finally {
-      dropDatabase(DB);
-      setCurrentDatabase(prevDb);
+      dropDatabase(DB, mediaType);
+      setCurrentDatabase(prevDb, mediaType);
     }
   }
 
-  @Test
   public void testMeasureJaxBConversion() throws Exception {
     CubeMeasure cubeMeasure =
       new ColumnMeasure(new FieldSchema("msr1", "int", "first measure"), null, null, null, null, null, null, null,
@@ -563,12 +564,12 @@ public class TestMetastoreService extends LensJerseyTest {
     assertEquals(actualMeasure.getMax(), measure.getMax());
   }
 
-  @Test
-  public void testGetCube() throws Exception {
-    final String DB = dbPFX + "test_get_cube";
-    String prevDb = getCurrentDatabase();
-    createDatabase(DB);
-    setCurrentDatabase(DB);
+  @Test(dataProvider = "mediaTypeData")
+  public void testGetCube(MediaType mediaType) throws Exception {
+    final String DB = dbPFX + "test_get_cube" + mediaType.getSubtype();
+    String prevDb = getCurrentDatabase(mediaType);
+    createDatabase(DB, mediaType);
+    setCurrentDatabase(DB, mediaType);
 
     try {
       final XBaseCube cube = createTestCube("testGetCube");
@@ -576,7 +577,8 @@ public class TestMetastoreService extends LensJerseyTest {
       WebTarget target = target().path("metastore").path("cubes");
       JAXBElement<XCube> element = cubeObjectFactory.createXCube(cube);
       APIResult result =
-        target.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(element), APIResult.class);
+        target.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.entity(
+          new GenericEntity<JAXBElement<XCube>>(element){}, mediaType), APIResult.class);
       assertSuccess(result);
 
       // Now get
@@ -674,7 +676,8 @@ public class TestMetastoreService extends LensJerseyTest {
       // Create this cube first
       element = cubeObjectFactory.createXCube(dcube);
       result =
-        target.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(element), APIResult.class);
+        target.queryParam("sessionid", lensSessionId).request(mediaType).post(
+          Entity.entity(new GenericEntity<JAXBElement<XCube>>(element){}, mediaType), APIResult.class);
       assertSuccess(result);
 
       // Now get
@@ -688,17 +691,17 @@ public class TestMetastoreService extends LensJerseyTest {
       assertEquals(actual2.getMeasureNames().getMeasureName().size(), dcube.getMeasureNames().getMeasureName().size());
       assertEquals(actual2.getDimAttrNames().getAttrName().size(), dcube.getDimAttrNames().getAttrName().size());
     } finally {
-      dropDatabase(DB);
-      setCurrentDatabase(prevDb);
+      dropDatabase(DB, mediaType);
+      setCurrentDatabase(prevDb, mediaType);
     }
   }
 
-  @Test
-  public void testDropCube() throws Exception {
-    final String DB = dbPFX + "test_drop_cube";
-    String prevDb = getCurrentDatabase();
-    createDatabase(DB);
-    setCurrentDatabase(DB);
+  @Test(dataProvider = "mediaTypeData")
+  public void testDropCube(MediaType mediaType) throws Exception {
+    final String DB = dbPFX + "test_drop_cube" + mediaType.getSubtype();
+    String prevDb = getCurrentDatabase(mediaType);
+    createDatabase(DB, mediaType);
+    setCurrentDatabase(DB, mediaType);
 
     try {
       final XCube cube = createTestCube("test_drop_cube");
@@ -706,7 +709,8 @@ public class TestMetastoreService extends LensJerseyTest {
       WebTarget target = target().path("metastore").path("cubes");
       JAXBElement<XCube> element = cubeObjectFactory.createXCube(cube);
       APIResult result =
-        target.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(element), APIResult.class);
+        target.queryParam("sessionid", lensSessionId).request(mediaType).post(
+          Entity.entity(new GenericEntity<JAXBElement<XCube>>(element){}, mediaType), APIResult.class);
       assertSuccess(result);
 
       final XCube dcube = createDerivedCube("test_drop_derived_cube", "test_drop_cube", false);
@@ -714,7 +718,8 @@ public class TestMetastoreService extends LensJerseyTest {
       // Create this cube first
       element = cubeObjectFactory.createXCube(dcube);
       result =
-        target.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(element), APIResult.class);
+        target.queryParam("sessionid", lensSessionId).request(mediaType).post(
+          Entity.entity(new GenericEntity<JAXBElement<XCube>>(element){}, mediaType), APIResult.class);
       assertSuccess(result);
 
       target = target().path("metastore").path("cubes").path("test_drop_derived_cube");
@@ -745,18 +750,18 @@ public class TestMetastoreService extends LensJerseyTest {
         log.error("Resource not found.", ex);
       }
     } finally {
-      dropDatabase(DB);
-      setCurrentDatabase(prevDb);
+      dropDatabase(DB, mediaType);
+      setCurrentDatabase(prevDb, mediaType);
     }
   }
 
-  @Test
-  public void testUpdateCube() throws Exception {
+  @Test(dataProvider = "mediaTypeData")
+  public void testUpdateCube(MediaType mediaType) throws Exception {
     final String cubeName = "test_update";
-    final String DB = dbPFX + "test_update_cube";
-    String prevDb = getCurrentDatabase();
-    createDatabase(DB);
-    setCurrentDatabase(DB);
+    final String DB = dbPFX + "test_update_cube" + mediaType.getSubtype();
+    String prevDb = getCurrentDatabase(mediaType);
+    createDatabase(DB, mediaType);
+    setCurrentDatabase(DB, mediaType);
 
     try {
       final XBaseCube cube = createTestCube(cubeName);
@@ -764,7 +769,8 @@ public class TestMetastoreService extends LensJerseyTest {
       WebTarget target = target().path("metastore").path("cubes");
       JAXBElement<XCube> element = cubeObjectFactory.createXCube(cube);
       APIResult result =
-        target.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(element), APIResult.class);
+        target.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.entity(
+          new GenericEntity<JAXBElement<XCube>>(element){}, mediaType), APIResult.class);
       assertSuccess(result);
 
       // Update something
@@ -788,7 +794,8 @@ public class TestMetastoreService extends LensJerseyTest {
 
       element = cubeObjectFactory.createXCube(cube);
       result = target.path(cubeName)
-        .queryParam("sessionid", lensSessionId).request(mediaType).put(Entity.xml(element), APIResult.class);
+        .queryParam("sessionid", lensSessionId).request(mediaType).put(Entity.entity(
+          new GenericEntity<JAXBElement<XCube>>(element){}, mediaType), APIResult.class);
       assertSuccess(result);
 
       JAXBElement<XCube> got =
@@ -807,7 +814,8 @@ public class TestMetastoreService extends LensJerseyTest {
       XDerivedCube dcube = createDerivedCube("test_update_derived", cubeName, true);
       element = cubeObjectFactory.createXCube(dcube);
       result =
-        target.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(element), APIResult.class);
+        target.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.entity(
+          new GenericEntity<JAXBElement<XCube>>(element){}, mediaType), APIResult.class);
       assertEquals(result.getStatus(), Status.FAILED);
       assertEquals(result.getMessage(), "Problem in submitting entity: Derived cube invalid: Measures "
         + "[random_measure] and Dim Attributes [random_dim] were not present in parent cube test_update");
@@ -815,7 +823,8 @@ public class TestMetastoreService extends LensJerseyTest {
       // Create this cube first
       element = cubeObjectFactory.createXCube(dcube);
       result =
-        target.queryParam("sessionid", lensSessionId).request(mediaType).post(Entity.xml(element), APIResult.class);
+        target.queryParam("sessionid", lensSessionId).request(mediaType).post(
+          Entity.entity(new GenericEntity<JAXBElement<XCube>>(element){}, mediaType), APIResult.class);
       assertSuccess(result);
 
       // Update something
@@ -831,7 +840,8 @@ public class TestMetastoreService extends LensJerseyTest {
 
       element = cubeObjectFactory.createXCube(dcube);
       result = target.path("test_update_derived")
-        .queryParam("sessionid", lensSessionId).request(mediaType).put(Entity.xml(element), APIResult.class);
+        .queryParam("sessionid", lensSessionId).request(mediaType).put(Entity.entity(new
+          GenericEntity<JAXBElement<XCube>>(element){}, mediaType), APIResult.class);
       assertSuccess(result);
 
       got = target.path("test_update_derived")
@@ -849,19 +859,19 @@ public class TestMetastoreService extends LensJerseyTest {
       assertEquals(((AbstractCubeTable) hdcube).getProperties().get("foo.derived2"), "bar.derived2");
 
     } finally {
-      dropDatabase(DB);
-      setCurrentDatabase(prevDb);
+      dropDatabase(DB, mediaType);
+      setCurrentDatabase(prevDb, mediaType);
     }
   }
 
-  @Test
-  public void testStorage() throws Exception {
-    final String DB = dbPFX + "test_storage";
-    String prevDb = getCurrentDatabase();
-    createDatabase(DB);
-    setCurrentDatabase(DB);
+  @Test(dataProvider = "mediaTypeData")
+  public void testStorage(MediaType mediaType) throws Exception {
+    final String DB = dbPFX + "test_storage" + mediaType.getSubtype();
+    String prevDb = getCurrentDatabase(mediaType);
+    createDatabase(DB, mediaType);
+    setCurrentDatabase(DB, mediaType);
     try {
-      createStorage("store1");
+      createStorage("store1", mediaType);
       final WebTarget target = target().path("metastore").path("storages");
 
       StringList storages = target.queryParam("sessionid", lensSessionId).request(mediaType).get(StringList.class);
@@ -891,7 +901,8 @@ public class TestMetastoreService extends LensJerseyTest {
 
       APIResult result = target.path("store1")
         .queryParam("sessionid", lensSessionId).queryParam("storage", "store1")
-        .request(mediaType).put(Entity.xml(cubeObjectFactory.createXStorage(store1)), APIResult.class);
+        .request(mediaType).put(Entity.entity(new GenericEntity<JAXBElement<XStorage>>(cubeObjectFactory
+          .createXStorage(store1)){}, mediaType), APIResult.class);
       assertSuccess(result);
 
       store1 = target.path("store1").queryParam("sessionid", lensSessionId).request(mediaType).get(XStorage.class);
@@ -904,10 +915,10 @@ public class TestMetastoreService extends LensJerseyTest {
       assertEquals(JAXBUtils.mapFromXProperties(store1.getProperties()).get("prop2.name"), "prop2.value");
 
       // drop the storage
-      dropStorage("store1");
+      dropStorage("store1", mediaType);
     } finally {
-      dropDatabase(DB);
-      setCurrentDatabase(prevDb);
+      dropDatabase(DB, mediaType);
+      setCurrentDatabase(prevDb, mediaType);
     }
   }
 
@@ -982,25 +993,22 @@ public class TestMetastoreService extends LensJerseyTest {
     return dt;
   }
 
-  private XDimensionTable createDimTable(String dimTableName) throws Exception {
+  private XDimensionTable createDimTable(String dimTableName, MediaType mediaType) throws Exception {
     XDimension dimension = createDimension("testdim");
     APIResult result = target().path("metastore").path("dimensions")
       .queryParam("sessionid", lensSessionId).request(
-        mediaType).post(Entity.xml(cubeObjectFactory.createXDimension(dimension)), APIResult.class);
+        mediaType).post(Entity.entity(new GenericEntity<JAXBElement<XDimension>>(cubeObjectFactory
+        .createXDimension(dimension)) {}, mediaType), APIResult.class);
     assertSuccess(result);
     XDimensionTable dt = createDimTable("testdim", dimTableName);
     dt.getStorageTables().getStorageTable().add(createStorageTblElement("test", dimTableName, "HOURLY"));
-    final FormDataMultiPart mp = new FormDataMultiPart();
-    mp.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("sessionid").build(),
-      lensSessionId, medType));
-    mp.bodyPart(new FormDataBodyPart(
-      FormDataContentDisposition.name("dimensionTable").fileName("dimtable").build(),
-      cubeObjectFactory.createXDimensionTable(dt), medType));
     result = target()
       .path("metastore")
-      .path("dimtables")
+      .path("dimtables").queryParam("sessionid", lensSessionId)
       .request(mediaType)
-      .post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE), APIResult.class);
+      .post(Entity.entity(
+        new GenericEntity<JAXBElement<XDimensionTable>>(cubeObjectFactory.createXDimensionTable(dt)) {},
+        mediaType), APIResult.class);
     assertSuccess(result);
     return dt;
   }
@@ -1054,7 +1062,7 @@ public class TestMetastoreService extends LensJerseyTest {
     return dimension;
   }
 
-  private void createdChainedDimensions() throws Exception {
+  private void createdChainedDimensions(MediaType mediaType) throws Exception {
     XDimension dimension = createDimension("testdim");
     XDimension dimension2 = createDimension("testdim2");
 
@@ -1137,25 +1145,27 @@ public class TestMetastoreService extends LensJerseyTest {
 
     // create
     APIResult result = target.queryParam("sessionid", lensSessionId).request(
-      mediaType).post(Entity.xml(cubeObjectFactory.createXDimension(dimension)), APIResult.class);
+      mediaType).post(Entity.entity(new GenericEntity<JAXBElement<XDimension>>(cubeObjectFactory
+      .createXDimension(dimension)){}, mediaType), APIResult.class);
     assertNotNull(result);
     assertSuccess(result);
 
     // create
     result = target.queryParam("sessionid", lensSessionId).request(
-      mediaType).post(Entity.xml(cubeObjectFactory.createXDimension(dimension2)), APIResult.class);
+      mediaType).post(Entity.entity(new GenericEntity<JAXBElement<XDimension>>(cubeObjectFactory
+      .createXDimension(dimension2)){}, mediaType), APIResult.class);
     assertNotNull(result);
     assertSuccess(result);
   }
 
-  @Test
-  public void testDimension() throws Exception {
-    final String DB = dbPFX + "test_dimension";
-    String prevDb = getCurrentDatabase();
-    createDatabase(DB);
-    setCurrentDatabase(DB);
+  @Test(dataProvider = "mediaTypeData")
+  public void testDimension(MediaType mediaType) throws Exception {
+    final String DB = dbPFX + "test_dimension" + mediaType.getSubtype();
+    String prevDb = getCurrentDatabase(mediaType);
+    createDatabase(DB, mediaType);
+    setCurrentDatabase(DB, mediaType);
     try {
-      createdChainedDimensions();
+      createdChainedDimensions(mediaType);
 
       final WebTarget target = target().path("metastore").path("dimensions");
 
@@ -1257,7 +1267,8 @@ public class TestMetastoreService extends LensJerseyTest {
 
       APIResult result = target.path("testdim")
         .queryParam("sessionid", lensSessionId)
-        .request(mediaType).put(Entity.xml(cubeObjectFactory.createXDimension(testDim)), APIResult.class);
+        .request(mediaType).put(Entity.entity(new GenericEntity<JAXBElement<XDimension>>(cubeObjectFactory
+          .createXDimension(testDim)){}, mediaType), APIResult.class);
       assertSuccess(result);
 
       XDimension altered = target.path("testdim").queryParam("sessionid", lensSessionId).request(mediaType).get(
@@ -1299,22 +1310,22 @@ public class TestMetastoreService extends LensJerseyTest {
         log.error("Resource not found.", ex);
       }
     } finally {
-      dropDatabase(DB);
-      setCurrentDatabase(prevDb);
+      dropDatabase(DB, mediaType);
+      setCurrentDatabase(prevDb, mediaType);
     }
   }
 
-  @Test
-  public void testCreateAndDropDimensionTable() throws Exception {
+  @Test(dataProvider = "mediaTypeData")
+  public void testCreateAndDropDimensionTable(MediaType mediaType) throws Exception {
     final String table = "test_create_dim";
-    final String DB = dbPFX + "test_dim_db";
-    String prevDb = getCurrentDatabase();
-    createDatabase(DB);
-    setCurrentDatabase(DB);
-    createStorage("test");
+    final String DB = dbPFX + "test_dim_db" + mediaType.getSubtype();
+    String prevDb = getCurrentDatabase(mediaType);
+    createDatabase(DB, mediaType);
+    setCurrentDatabase(DB, mediaType);
+    createStorage("test", mediaType);
 
     try {
-      createDimTable(table);
+      createDimTable(table, mediaType);
 
       // Drop the table now
       APIResult result =
@@ -1334,22 +1345,22 @@ public class TestMetastoreService extends LensJerseyTest {
       }
 
     } finally {
-      setCurrentDatabase(prevDb);
-      dropDatabase(DB);
+      setCurrentDatabase(prevDb, mediaType);
+      dropDatabase(DB, mediaType);
     }
   }
 
-  @Test
-  public void testGetAndUpdateDimensionTable() throws Exception {
+  @Test(dataProvider = "mediaTypeData")
+  public void testGetAndUpdateDimensionTable(MediaType mediaType) throws Exception {
     final String table = "test_get_dim";
-    final String DB = dbPFX + "test_get_dim_db";
-    String prevDb = getCurrentDatabase();
-    createDatabase(DB);
-    setCurrentDatabase(DB);
-    createStorage("test");
+    final String DB = dbPFX + "test_get_dim_db" + mediaType.getSubtype();
+    String prevDb = getCurrentDatabase(mediaType);
+    createDatabase(DB, mediaType);
+    setCurrentDatabase(DB, mediaType);
+    createStorage("test", mediaType);
 
     try {
-      XDimensionTable dt1 = createDimTable(table);
+      XDimensionTable dt1 = createDimTable(table, mediaType);
 
       JAXBElement<XDimensionTable> dtElement = target().path("metastore/dimtables").path(table)
         .queryParam("sessionid", lensSessionId).request(mediaType)
@@ -1379,7 +1390,9 @@ public class TestMetastoreService extends LensJerseyTest {
       APIResult result = target().path("metastore/dimtables")
         .path(table)
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .put(Entity.xml(cubeObjectFactory.createXDimensionTable(dt2)), APIResult.class);
+        .put(Entity.entity(new GenericEntity<JAXBElement<XDimensionTable>>(cubeObjectFactory
+            .createXDimensionTable(dt2)){}, mediaType),
+          APIResult.class);
       assertSuccess(result);
 
       // Get the updated table
@@ -1407,7 +1420,7 @@ public class TestMetastoreService extends LensJerseyTest {
       dt3.getStorageTables().getStorageTable().get(0).getTableDesc().setInputFormat(
         SequenceFileInputFormat.class.getCanonicalName());
       // add one more storage table
-      createStorage("testAlterDimStorage");
+      createStorage("testAlterDimStorage", mediaType);
       XStorageTableElement newStorage = createStorageTblElement("testAlterDimStorage", dt3.getTableName(),
         (String[]) null);
       newStorage.getTableDesc().setFieldDelimiter(":");
@@ -1416,7 +1429,9 @@ public class TestMetastoreService extends LensJerseyTest {
       result = target().path("metastore/dimtables")
         .path(table)
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .put(Entity.xml(cubeObjectFactory.createXDimensionTable(dt3)), APIResult.class);
+        .put(Entity.entity(new GenericEntity<JAXBElement<XDimensionTable>>(cubeObjectFactory
+            .createXDimensionTable(dt3)){}, mediaType),
+          APIResult.class);
       assertSuccess(result);
 
       // Get the updated table
@@ -1436,7 +1451,7 @@ public class TestMetastoreService extends LensJerseyTest {
       // get native table and validate altered property
       XNativeTable newdNativeTable = nativeTarget.path("testalterdimstorage_" + table)
         .queryParam("sessionid", lensSessionId)
-        .request(mediaType).get(XNativeTable.class);
+        .request(mediaType).get(new GenericType<JAXBElement<XNativeTable>>() {}).getValue();
       assertEquals(newdNativeTable.getStorageDescriptor().getFieldDelimiter(), ":");
       XNativeTable alteredNativeTable = nativeTarget.path("test_" + table).queryParam("sessionid", lensSessionId)
         .request(mediaType).get(XNativeTable.class);
@@ -1449,22 +1464,22 @@ public class TestMetastoreService extends LensJerseyTest {
           .queryParam("sessionid", lensSessionId).request(mediaType).delete(APIResult.class);
       assertSuccess(result);
     } finally {
-      setCurrentDatabase(prevDb);
-      dropDatabase(DB);
+      setCurrentDatabase(prevDb, mediaType);
+      dropDatabase(DB, mediaType);
     }
   }
 
-  @Test
-  public void testGetDimensionStorages() throws Exception {
+  @Test(dataProvider = "mediaTypeData")
+  public void testGetDimensionStorages(MediaType mediaType) throws Exception {
     final String table = "test_get_storage";
     final String DB = dbPFX + "test_get_dim_storage_db";
-    String prevDb = getCurrentDatabase();
-    createDatabase(DB);
-    setCurrentDatabase(DB);
-    createStorage("test");
+    String prevDb = getCurrentDatabase(mediaType);
+    createDatabase(DB, mediaType);
+    setCurrentDatabase(DB, mediaType);
+    createStorage("test", mediaType);
 
     try {
-      createDimTable(table);
+      createDimTable(table, mediaType);
       StringList storages = target().path("metastore").path("dimtables")
         .path(table).path("storages")
         .queryParam("sessionid", lensSessionId).request(mediaType)
@@ -1472,28 +1487,30 @@ public class TestMetastoreService extends LensJerseyTest {
       assertEquals(storages.getElements().size(), 1);
       assertTrue(storages.getElements().contains("test"));
     } finally {
-      setCurrentDatabase(prevDb);
-      dropDatabase(DB);
+      setCurrentDatabase(prevDb, mediaType);
+      dropDatabase(DB, mediaType);
     }
   }
 
-  @Test
-  public void testAddAndDropDimensionStorages() throws Exception {
+  @Test(dataProvider = "mediaTypeData")
+  public void testAddAndDropDimensionStorages(MediaType mediaType) throws Exception {
     final String table = "test_add_drop_storage";
-    final String DB = dbPFX + "test_add_drop_dim_storage_db";
-    createDatabase(DB);
-    String prevDb = getCurrentDatabase();
-    setCurrentDatabase(DB);
-    createStorage("test");
-    createStorage("test2");
-    createStorage("test3");
+    final String DB = dbPFX + "test_add_drop_dim_storage_db" + mediaType.getSubtype();
+    createDatabase(DB, mediaType);
+    String prevDb = getCurrentDatabase(mediaType);
+    setCurrentDatabase(DB, mediaType);
+    createStorage("test", mediaType);
+    createStorage("test2", mediaType);
+    createStorage("test3", mediaType);
     try {
-      createDimTable(table);
+      createDimTable(table, mediaType);
 
       XStorageTableElement sTbl = createStorageTblElement("test2", table, "DAILY");
       APIResult result = target().path("metastore/dimtables").path(table).path("/storages")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXStorageTableElement(sTbl)), APIResult.class);
+        .post(Entity.entity(new GenericEntity<JAXBElement<XStorageTableElement>>(cubeObjectFactory
+          .createXStorageTableElement(sTbl)) {
+        }, mediaType), APIResult.class);
       assertSuccess(result);
 
       StringList storages = target().path("metastore").path("dimtables")
@@ -1501,8 +1518,8 @@ public class TestMetastoreService extends LensJerseyTest {
         .queryParam("sessionid", lensSessionId).request(mediaType)
         .get(StringList.class);
       assertEquals(storages.getElements().size(), 2);
-      assertTrue(storages.getElements().contains("test"));
-      assertTrue(storages.getElements().contains("test2"));
+      assertTrue(storages.getElements().contains("test"), "Got " + storages.getElements().toString());
+      assertTrue(storages.getElements().contains("test2"), "Got " + storages.getElements().toString());
 
       // Check get table also contains the storage
       JAXBElement<XDimensionTable> dt = target().path("metastore/dimtables").path(table)
@@ -1542,7 +1559,8 @@ public class TestMetastoreService extends LensJerseyTest {
       sTbl = createStorageTblElement("test3", table, (String[]) null);
       result = target().path("metastore/dimtables").path(table).path("/storages")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXStorageTableElement(sTbl)), APIResult.class);
+        .post(Entity.entity(new GenericEntity<JAXBElement<XStorageTableElement>>(cubeObjectFactory
+          .createXStorageTableElement(sTbl)){}, mediaType), APIResult.class);
       assertSuccess(result);
 
       storages = target().path("metastore").path("dimtables")
@@ -1563,27 +1581,28 @@ public class TestMetastoreService extends LensJerseyTest {
       assertTrue(cdim.getStorages().contains("test3"));
       assertNull(cdim.getSnapshotDumpPeriods().get("test3"));
     } finally {
-      setCurrentDatabase(prevDb);
-      dropDatabase(DB);
+      setCurrentDatabase(prevDb, mediaType);
+      dropDatabase(DB, mediaType);
     }
   }
 
-  @Test
-  public void testAddDropAllDimStorages() throws Exception {
+  @Test(dataProvider = "mediaTypeData")
+  public void testAddDropAllDimStorages(MediaType mediaType) throws Exception {
     final String table = "testAddDropAllDimStorages";
-    final String DB = dbPFX + "testAddDropAllDimStorages_db";
-    String prevDb = getCurrentDatabase();
-    createDatabase(DB);
-    setCurrentDatabase(DB);
-    createStorage("test");
-    createStorage("test2");
+    final String DB = dbPFX + "testAddDropAllDimStorages_db" + mediaType.getSubtype();
+    String prevDb = getCurrentDatabase(mediaType);
+    createDatabase(DB, mediaType);
+    setCurrentDatabase(DB, mediaType);
+    createStorage("test", mediaType);
+    createStorage("test2", mediaType);
 
     try {
-      createDimTable(table);
+      createDimTable(table, mediaType);
       XStorageTableElement sTbl = createStorageTblElement("test2", table, "DAILY");
       APIResult result = target().path("metastore/dimtables").path(table).path("/storages")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXStorageTableElement(sTbl)), APIResult.class);
+        .post(Entity.entity(new GenericEntity<JAXBElement<XStorageTableElement>>(cubeObjectFactory
+          .createXStorageTableElement(sTbl)){}, mediaType), APIResult.class);
       assertSuccess(result);
 
       result = target().path("metastore/dimtables/").path(table).path("storages")
@@ -1591,7 +1610,6 @@ public class TestMetastoreService extends LensJerseyTest {
         .delete(APIResult.class);
       assertSuccess(result);
 
-
       JAXBElement<XDimensionTable> dt = target().path("metastore/dimtables").path(table)
         .queryParam("sessionid", lensSessionId).request(mediaType)
         .get(new GenericType<JAXBElement<XDimensionTable>>() {});
@@ -1600,8 +1618,8 @@ public class TestMetastoreService extends LensJerseyTest {
       assertTrue(cdim.getStorages().isEmpty());
       assertTrue(cdim.getSnapshotDumpPeriods().isEmpty());
     } finally {
-      setCurrentDatabase(prevDb);
-      dropDatabase(DB);
+      setCurrentDatabase(prevDb, mediaType);
+      dropDatabase(DB, mediaType);
     }
   }
 
@@ -1636,31 +1654,27 @@ public class TestMetastoreService extends LensJerseyTest {
     return f;
   }
 
-  @Test
-  public void testCreateFactTable() throws Exception {
+  @Test(dataProvider = "mediaTypeData")
+  public void testCreateFactTable(MediaType mediaType) throws Exception {
     final String table = "testCreateFactTable";
-    final String DB = dbPFX + "testCreateFactTable_DB";
-    String prevDb = getCurrentDatabase();
-    createDatabase(DB);
-    setCurrentDatabase(DB);
-    createStorage("S1");
-    createStorage("S2");
+    final String DB = dbPFX + "testCreateFactTable_DB" + mediaType.getSubtype();
+    String prevDb = getCurrentDatabase(mediaType);
+    createDatabase(DB, mediaType);
+    setCurrentDatabase(DB, mediaType);
+    createStorage("S1", mediaType);
+    createStorage("S2", mediaType);
     try {
 
       XFactTable f = createFactTable(table);
       f.getStorageTables().getStorageTable().add(createStorageTblElement("S1", table, "HOURLY"));
       f.getStorageTables().getStorageTable().add(createStorageTblElement("S2", table, "DAILY"));
-      final FormDataMultiPart mp = new FormDataMultiPart();
-      mp.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("sessionid").build(),
-        lensSessionId, medType));
-      mp.bodyPart(new FormDataBodyPart(
-        FormDataContentDisposition.name("fact").fileName("fact").build(),
-        cubeObjectFactory.createXFactTable(f), medType));
       APIResult result = target()
         .path("metastore")
-        .path("facts")
+        .path("facts").queryParam("sessionid", lensSessionId)
         .request(mediaType)
-        .post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE), APIResult.class);
+        .post(Entity.entity(
+          new GenericEntity<JAXBElement<XFactTable>>(cubeObjectFactory.createXFactTable(f)){}, mediaType),
+          APIResult.class);
       assertSuccess(result);
 
       // Get all fact names, this should contain the fact table
@@ -1712,37 +1726,33 @@ public class TestMetastoreService extends LensJerseyTest {
         // PASS
       }
     } finally {
-      setCurrentDatabase(prevDb);
-      dropDatabase(DB);
+      setCurrentDatabase(prevDb, mediaType);
+      dropDatabase(DB, mediaType);
     }
   }
 
-  @Test
-  public void testUpdateFactTable() throws Exception {
+  @Test(dataProvider = "mediaTypeData")
+  public void testUpdateFactTable(MediaType mediaType) throws Exception {
     final String table = "testUpdateFactTable";
-    final String DB = dbPFX + "testUpdateFactTable_DB";
-    String prevDb = getCurrentDatabase();
-    createDatabase(DB);
-    setCurrentDatabase(DB);
-    createStorage("S1");
-    createStorage("S2");
-    createStorage("S3");
+    final String DB = dbPFX + "testUpdateFactTable_DB" + mediaType.getSubtype();
+    String prevDb = getCurrentDatabase(mediaType);
+    createDatabase(DB, mediaType);
+    setCurrentDatabase(DB, mediaType);
+    createStorage("S1", mediaType);
+    createStorage("S2", mediaType);
+    createStorage("S3", mediaType);
     try {
 
       XFactTable f = createFactTable(table);
       f.getStorageTables().getStorageTable().add(createStorageTblElement("S1", table, "HOURLY"));
       f.getStorageTables().getStorageTable().add(createStorageTblElement("S2", table, "DAILY"));
-      final FormDataMultiPart mp = new FormDataMultiPart();
-      mp.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("sessionid").build(),
-        lensSessionId, medType));
-      mp.bodyPart(new FormDataBodyPart(
-        FormDataContentDisposition.name("fact").fileName("fact").build(),
-        cubeObjectFactory.createXFactTable(f), medType));
       APIResult result = target()
         .path("metastore")
-        .path("facts")
+        .path("facts").queryParam("sessionid", lensSessionId)
         .request(mediaType)
-        .post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE), APIResult.class);
+        .post(Entity.entity(
+            new GenericEntity<JAXBElement<XFactTable>>(cubeObjectFactory.createXFactTable(f)){}, mediaType),
+          APIResult.class);
       assertSuccess(result);
 
       // Get the created table
@@ -1768,7 +1778,9 @@ public class TestMetastoreService extends LensJerseyTest {
       // Update
       result = target().path("metastore").path("facts").path(table)
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .put(Entity.xml(cubeObjectFactory.createXFactTable(update)), APIResult.class);
+        .put(Entity.entity(new GenericEntity<JAXBElement<XFactTable>>(cubeObjectFactory.createXFactTable(update)){},
+            mediaType),
+          APIResult.class);
       assertSuccess(result);
 
       // Get the updated table
@@ -1801,7 +1813,7 @@ public class TestMetastoreService extends LensJerseyTest {
 
       // get native table and validate altered property
       XNativeTable alteredNativeTable = nativeTarget.path("s1_" + table).queryParam("sessionid", lensSessionId)
-        .request(mediaType).get(XNativeTable.class);
+        .request(mediaType).get(new GenericType<JAXBElement<XNativeTable>>() {}).getValue();
       assertEquals(alteredNativeTable.getStorageDescriptor().getFieldDelimiter(), "#");
 
       // Finally, drop the fact table
@@ -1823,37 +1835,33 @@ public class TestMetastoreService extends LensJerseyTest {
         // PASS
       }
     } finally {
-      setCurrentDatabase(prevDb);
-      dropDatabase(DB);
+      setCurrentDatabase(prevDb, mediaType);
+      dropDatabase(DB, mediaType);
     }
   }
 
-  @Test
-  public void testFactStorages() throws Exception {
+  @Test(dataProvider = "mediaTypeData")
+  public void testFactStorages(MediaType mediaType) throws Exception {
     final String table = "testFactStorages";
-    final String DB = dbPFX + "testFactStorages_DB";
-    String prevDb = getCurrentDatabase();
-    createDatabase(DB);
-    setCurrentDatabase(DB);
-    createStorage("S1");
-    createStorage("S2");
-    createStorage("S3");
+    final String DB = dbPFX + "testFactStorages_DB" + mediaType.getSubtype();
+    String prevDb = getCurrentDatabase(mediaType);
+    createDatabase(DB, mediaType);
+    setCurrentDatabase(DB, mediaType);
+    createStorage("S1", mediaType);
+    createStorage("S2", mediaType);
+    createStorage("S3", mediaType);
 
     try {
       XFactTable f = createFactTable(table);
       f.getStorageTables().getStorageTable().add(createStorageTblElement("S1", table, "HOURLY"));
       f.getStorageTables().getStorageTable().add(createStorageTblElement("S2", table, "DAILY"));
-      final FormDataMultiPart mp = new FormDataMultiPart();
-      mp.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("sessionid").build(),
-        lensSessionId, medType));
-      mp.bodyPart(new FormDataBodyPart(
-        FormDataContentDisposition.name("fact").fileName("fact").build(),
-        cubeObjectFactory.createXFactTable(f), medType));
       APIResult result = target()
         .path("metastore")
-        .path("facts")
+        .path("facts").queryParam("sessionid", lensSessionId)
         .request(mediaType)
-        .post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE), APIResult.class);
+        .post(Entity.entity(
+            new GenericEntity<JAXBElement<XFactTable>>(cubeObjectFactory.createXFactTable(f)){}, mediaType),
+          APIResult.class);
       assertSuccess(result);
 
       // Test get storages
@@ -1866,7 +1874,8 @@ public class TestMetastoreService extends LensJerseyTest {
       XStorageTableElement sTbl = createStorageTblElement("S3", table, "HOURLY", "DAILY", "MONTHLY");
       result = target().path("metastore/facts").path(table).path("storages")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXStorageTableElement(sTbl)), APIResult.class);
+        .post(Entity.entity(new GenericEntity<JAXBElement<XStorageTableElement>>(cubeObjectFactory
+          .createXStorageTableElement(sTbl)){}, mediaType), APIResult.class);
       assertSuccess(result);
 
       // Get the fact storage
@@ -1881,7 +1890,8 @@ public class TestMetastoreService extends LensJerseyTest {
 
       JAXBElement<XFactTable> gotFactElement = target().path("metastore/facts").path(table)
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .get(new GenericType<JAXBElement<XFactTable>>() {});
+        .get(new GenericType<JAXBElement<XFactTable>>() {
+        });
       XFactTable gotFact = gotFactElement.getValue();
       CubeFactTable ucf = JAXBUtils.cubeFactFromFactTable(gotFact);
 
@@ -1900,8 +1910,8 @@ public class TestMetastoreService extends LensJerseyTest {
       assertEquals(storageList.getElements().size(), 2);
       assertFalse(storageList.getElements().contains("S3"));
     } finally {
-      setCurrentDatabase(prevDb);
-      dropDatabase(DB);
+      setCurrentDatabase(prevDb, mediaType);
+      dropDatabase(DB, mediaType);
     }
   }
 
@@ -1937,28 +1947,29 @@ public class TestMetastoreService extends LensJerseyTest {
     return xp;
   }
 
-  @Test
-  public void testLatestDateWithInputTimeDimAbsentFromAtleastOneFactPartition() throws Exception {
+  @Test(dataProvider = "mediaTypeData")
+  public void testLatestDateWithInputTimeDimAbsentFromAtleastOneFactPartition(MediaType mediaType) throws Exception {
 
     final String dbName = dbPFX + getUniqueDbName();
-    String prevDb = getCurrentDatabase();
+    String prevDb = getCurrentDatabase(mediaType);
 
     try {
 
       // Begin: Setup
-      createDatabase(dbName);
-      setCurrentDatabase(dbName);
+      createDatabase(dbName, mediaType);
+      setCurrentDatabase(dbName, mediaType);
 
       String[] storages = {"S1"};
       for (String storage : storages) {
-        createStorage(storage);
+        createStorage(storage, mediaType);
       }
 
       // Create a cube with name testCube
       final String cubeName = "testCube";
       final XCube cube = createTestCube(cubeName);
       APIResult result = target().path("metastore").path("cubes").queryParam("sessionid", lensSessionId)
-        .request(mediaType).post(Entity.xml(cubeObjectFactory.createXCube(cube)), APIResult.class);
+        .request(mediaType).post(Entity.entity(new GenericEntity<JAXBElement<XCube>>(
+          cubeObjectFactory.createXCube(cube)){}, mediaType), APIResult.class);
       assertSuccess(result);
 
       // Create two facts and fact storage tables with one of the facts
@@ -1975,8 +1986,8 @@ public class TestMetastoreService extends LensJerseyTest {
       String fact2TableName = "fact2";
       String[] fact2TimePartColNames = {timeDimensionPresentInPartitionOfAllFacts};
 
-      createTestFactAndStorageTable(cubeName, storages, fact1TableName, fact1TimePartColNames);
-      createTestFactAndStorageTable(cubeName, storages, fact2TableName, fact2TimePartColNames);
+      createTestFactAndStorageTable(cubeName, storages, fact1TableName, fact1TimePartColNames, mediaType);
+      createTestFactAndStorageTable(cubeName, storages, fact2TableName, fact2TimePartColNames, mediaType);
 
       // Add partition to fact storage table of the fact whose partition has all time dimension
 
@@ -1998,7 +2009,9 @@ public class TestMetastoreService extends LensJerseyTest {
       APIResult partAddResult = target().path("metastore/facts/").path(fact1TableName)
         .path("storages/" + storages[0] + "/partition")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXPartition(xp)), APIResult.class);
+        .post(Entity.entity(new GenericEntity<JAXBElement<XPartition>>(cubeObjectFactory.createXPartition(xp)){},
+            mediaType),
+          APIResult.class);
       assertSuccess(partAddResult);
 
       // End: Setup
@@ -2016,44 +2029,42 @@ public class TestMetastoreService extends LensJerseyTest {
 
     } finally {
       // Cleanup
-      setCurrentDatabase(prevDb);
-      dropDatabase(dbName);
+      setCurrentDatabase(prevDb, mediaType);
+      dropDatabase(dbName, mediaType);
     }
   }
 
 
   @SuppressWarnings("deprecation")
-  @Test
-  public void testFactStoragePartitions() throws Exception {
+  @Test(dataProvider = "mediaTypeData")
+  public void testFactStoragePartitions(MediaType mediaType) throws Exception {
     final String table = "testFactStoragePartitions";
-    final String DB = dbPFX + "testFactStoragePartitions_DB";
-    String prevDb = getCurrentDatabase();
-    createDatabase(DB);
-    setCurrentDatabase(DB);
-    createStorage("S1");
-    createStorage("S2");
+    final String DB = dbPFX + "testFactStoragePartitions_DB" + mediaType.getSubtype();
+    String prevDb = getCurrentDatabase(mediaType);
+    createDatabase(DB, mediaType);
+    setCurrentDatabase(DB, mediaType);
+    createStorage("S1", mediaType);
+    createStorage("S2", mediaType);
 
     try {
 
       final XCube cube = createTestCube("testCube");
       target().path("metastore").path("cubes").queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXCube(cube)), APIResult.class);
+        .post(Entity.entity(new GenericEntity<JAXBElement<XCube>>(cubeObjectFactory.createXCube(cube)) {
+          }, mediaType),
+          APIResult.class);
 
       XFactTable f = createFactTable(table);
       f.getStorageTables().getStorageTable().add(createStorageTblElement("S1", table, "HOURLY"));
       f.getStorageTables().getStorageTable().add(createStorageTblElement("S2", table, "DAILY"));
       f.getStorageTables().getStorageTable().add(createStorageTblElement("S2", table, "HOURLY"));
-      final FormDataMultiPart mp = new FormDataMultiPart();
-      mp.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("sessionid").build(),
-        lensSessionId, medType));
-      mp.bodyPart(new FormDataBodyPart(
-        FormDataContentDisposition.name("fact").fileName("fact").build(),
-        cubeObjectFactory.createXFactTable(f), medType));
       APIResult result = target()
         .path("metastore")
-        .path("facts")
+        .path("facts").queryParam("sessionid", lensSessionId)
         .request(mediaType)
-        .post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE), APIResult.class);
+        .post(Entity.entity(
+            new GenericEntity<JAXBElement<XFactTable>>(cubeObjectFactory.createXFactTable(f)){}, mediaType),
+          APIResult.class);
       assertSuccess(result);
 
       APIResult partAddResult;
@@ -2070,7 +2081,8 @@ public class TestMetastoreService extends LensJerseyTest {
         .add(createTimePartSpecElement(partDate, "non_existant_time_part"));
       partAddResult = target().path("metastore/facts/").path(table).path("storages/S2/partition")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXPartition(xp2)), APIResult.class);
+        .post(Entity.entity(new GenericEntity<JAXBElement<XPartition>>(cubeObjectFactory.createXPartition(xp2)){},
+          mediaType), APIResult.class);
       assertEquals(partAddResult.getStatus(), Status.FAILED);
       assertEquals(partAddResult.getMessage(), "No timeline found for fact=testFactStoragePartitions, storage=S2, "
         + "update period=HOURLY, partition column=non_existant_time_part.");
@@ -2078,25 +2090,29 @@ public class TestMetastoreService extends LensJerseyTest {
       XPartition xp = createPartition(table, partDate);
       partAddResult = target().path("metastore/facts/").path(table).path("storages/S2/partition")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXPartition(xp)), APIResult.class);
+        .post(Entity.entity(new GenericEntity<JAXBElement<XPartition>>(cubeObjectFactory.createXPartition(xp)){},
+          mediaType), APIResult.class);
       assertSuccess(partAddResult);
 
       // add same should fail
       partAddResult = target().path("metastore/facts/").path(table).path("storages/S2/partition")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXPartition(xp)), APIResult.class);
+        .post(Entity.entity(new GenericEntity<JAXBElement<XPartition>>(cubeObjectFactory.createXPartition(xp)){},
+          mediaType), APIResult.class);
       assertEquals(partAddResult.getStatus(), Status.FAILED);
 
       xp.setLocation(xp.getLocation() + "/a/b/c");
       APIResult partUpdateResult = target().path("metastore/facts/").path(table).path("storages/S2/partition")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .put(Entity.xml(cubeObjectFactory.createXPartition(xp)), APIResult.class);
+        .put(Entity.entity(new GenericEntity<JAXBElement<XPartition>>(cubeObjectFactory.createXPartition(xp)){},
+          mediaType), APIResult.class);
       assertSuccess(partUpdateResult);
 
       JAXBElement<XPartitionList> partitionsElement = target().path("metastore/facts").path(table)
         .path("storages/S2/partitions")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .get(new GenericType<JAXBElement<XPartitionList>>() {});
+        .get(new GenericType<JAXBElement<XPartitionList>>() {
+        });
 
       XPartitionList partitions = partitionsElement.getValue();
       assertNotNull(partitions);
@@ -2125,7 +2141,8 @@ public class TestMetastoreService extends LensJerseyTest {
       parts.getPartition().add(createPartition(table, DateUtils.addHours(partDate, 1)));
       partAddResult = target().path("metastore/facts/").path(table).path("storages/S2/partitions")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXPartitionList(parts)), APIResult.class);
+        .post(Entity.entity(new GenericEntity<JAXBElement<XPartitionList>>(
+          cubeObjectFactory.createXPartitionList(parts)){}, mediaType), APIResult.class);
       assertEquals(partAddResult.getStatus(), Status.PARTIAL);
 
       // Drop the partitions
@@ -2138,7 +2155,8 @@ public class TestMetastoreService extends LensJerseyTest {
       // Verify partition was dropped
       partitionsElement = target().path("metastore/facts").path(table).path("storages/S2/partitions")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .get(new GenericType<JAXBElement<XPartitionList>>() {});
+        .get(new GenericType<JAXBElement<XPartitionList>>() {
+        });
 
       partitions = partitionsElement.getValue();
       assertNotNull(partitions);
@@ -2152,20 +2170,29 @@ public class TestMetastoreService extends LensJerseyTest {
       // Try adding in batch, but to a wrong endpoint
       resp = target().path("metastore/facts/").path(table).path("storages/S2/partition")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXPartitionList(toXPartitionList(xp))));
-      assertXMLError(resp);
+        .post(Entity.entity(new GenericEntity<JAXBElement<XPartitionList>>(cubeObjectFactory
+          .createXPartitionList(toXPartitionList(xp))) {
+        }, mediaType));
+      assertXMLError(resp, mediaType);
 
 
       // Try adding in batch, but provide just an XPartition
       resp = target().path("metastore/facts/").path(table).path("storages/S2/partitions")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXPartition(xp)));
-      assertXMLError(resp);
+        .post(Entity.entity(new GenericEntity<JAXBElement<XPartition>>(cubeObjectFactory.createXPartition(xp)){},
+          mediaType));
+      if (mediaType.equals(MediaType.APPLICATION_XML_TYPE)) {
+        assertXMLError(resp, mediaType);
+      } else {
+        // for json input, XPartitionList is getting created
+        assertEquals(resp.getStatus(), 200);
+      }
 
       // Try adding in batch with one partition being wrong wrt partition column.
       partAddResult = target().path("metastore/facts/").path(table).path("storages/S2/partitions")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXPartitionList(toXPartitionList(xp2))),
+        .post(Entity.entity(new GenericEntity<JAXBElement<XPartitionList>>(cubeObjectFactory
+          .createXPartitionList(toXPartitionList(xp2))){}, mediaType),
           APIResult.class);
       assertEquals(partAddResult.getStatus(), Status.FAILED);
       assertEquals(partAddResult.getMessage(), "No timeline found for fact=testFactStoragePartitions, storage=S2, "
@@ -2173,7 +2200,9 @@ public class TestMetastoreService extends LensJerseyTest {
       // Add in batch
       partAddResult = target().path("metastore/facts/").path(table).path("storages/S2/partitions")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXPartitionList(toXPartitionList(xp))),
+        .post(Entity.entity(new GenericEntity<JAXBElement<XPartitionList>>(cubeObjectFactory
+            .createXPartitionList(toXPartitionList(xp))) {
+          }, mediaType),
           APIResult.class);
       assertSuccess(partAddResult);
 
@@ -2203,24 +2232,24 @@ public class TestMetastoreService extends LensJerseyTest {
       assertNotNull(partitions);
       assertEquals(partitions.getPartition().size(), 0);
     } finally {
-      setCurrentDatabase(prevDb);
-      dropDatabase(DB);
+      setCurrentDatabase(prevDb, mediaType);
+      dropDatabase(DB, mediaType);
     }
   }
 
-  @Test
-  public void testDimStoragePartitions() throws Exception {
+  @Test(dataProvider = "mediaTypeData")
+  public void testDimStoragePartitions(MediaType mediaType) throws Exception {
     final String table = "testDimStoragePartitions";
-    final String DB = dbPFX + "testDimStoragePartitions_DB";
-    String prevDb = getCurrentDatabase();
-    createDatabase(DB);
-    setCurrentDatabase(DB);
-    createStorage("S1");
-    createStorage("S2");
-    createStorage("test");
+    final String DB = dbPFX + "testDimStoragePartitions_DB" + mediaType.getSubtype();
+    String prevDb = getCurrentDatabase(mediaType);
+    createDatabase(DB, mediaType);
+    setCurrentDatabase(DB, mediaType);
+    createStorage("S1", mediaType);
+    createStorage("S2", mediaType);
+    createStorage("test", mediaType);
 
     try {
-      createDimTable(table);
+      createDimTable(table, mediaType);
       APIResult partAddResult;
       // Add null partition
       Response resp = target().path("metastore/dimtables/").path(table).path("storages/test/partition")
@@ -2233,20 +2262,23 @@ public class TestMetastoreService extends LensJerseyTest {
       XPartition xp = createPartition(table, partDate);
       partAddResult = target().path("metastore/dimtables/").path(table).path("storages/test/partition")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXPartition(xp)), APIResult.class);
+        .post(Entity.entity(new GenericEntity<JAXBElement<XPartition>>(cubeObjectFactory.createXPartition(xp)){},
+          mediaType), APIResult.class);
       assertSuccess(partAddResult);
 
       // create call for same
       partAddResult = target().path("metastore/dimtables/").path(table).path("storages/test/partition")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXPartition(xp)), APIResult.class);
+        .post(Entity.entity(new GenericEntity<JAXBElement<XPartition>>(cubeObjectFactory.createXPartition(xp)){},
+          mediaType), APIResult.class);
       assertEquals(partAddResult.getStatus(), Status.FAILED);
 
 
       xp.setLocation(xp.getLocation() + "/a/b/c");
       APIResult partUpdateResult = target().path("metastore/dimtables/").path(table).path("storages/test/partition")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .put(Entity.xml(cubeObjectFactory.createXPartition(xp)), APIResult.class);
+        .put(Entity.entity(new GenericEntity<JAXBElement<XPartition>>(cubeObjectFactory.createXPartition(xp)){},
+          mediaType), APIResult.class);
       assertSuccess(partUpdateResult);
 
       JAXBElement<XPartitionList> partitionsElement = target().path("metastore/dimtables").path(table)
@@ -2295,7 +2327,8 @@ public class TestMetastoreService extends LensJerseyTest {
       parts.getPartition().add(xp2);
       partAddResult = target().path("metastore/dimtables/").path(table).path("storages/test/partitions")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXPartitionList(parts)), APIResult.class);
+        .post(Entity.entity(new GenericEntity<JAXBElement<XPartitionList>>(
+          cubeObjectFactory.createXPartitionList(parts)){}, mediaType), APIResult.class);
       assertEquals(partAddResult.getStatus(), Status.PARTIAL);
 
       // Drop the partitions
@@ -2323,19 +2356,29 @@ public class TestMetastoreService extends LensJerseyTest {
       // Try adding in batch, but to a wrong endpoint
       resp = target().path("metastore/dimtables/").path(table).path("storages/test/partition")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXPartitionList(toXPartitionList(xp))));
-      assertXMLError(resp);
+        .post(Entity.entity(
+          new GenericEntity<JAXBElement<XPartitionList>>(cubeObjectFactory.createXPartitionList(toXPartitionList(xp)))
+          {}, mediaType));
+      assertXMLError(resp, mediaType);
 
       // Try adding in batch, but provide just an XPartition
       resp = target().path("metastore/dimtables/").path(table).path("storages/test/partitions")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXPartition(xp)));
-      assertXMLError(resp);
-
+        .post(Entity.entity(new GenericEntity<JAXBElement<XPartition>>(cubeObjectFactory.createXPartition(xp)){},
+          mediaType));
+      if (mediaType.equals(MediaType.APPLICATION_XML_TYPE)) {
+        assertXMLError(resp, mediaType);
+      } else {
+        // for json input, XPartitionList is getting created
+        assertEquals(resp.getStatus(), 200);
+      }
       // Add in batch
       partAddResult = target().path("metastore/dimtables/").path(table).path("storages/test/partitions")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXPartitionList(toXPartitionList(xp))),
+        .post(Entity.entity(
+          new GenericEntity<JAXBElement<XPartitionList>>(cubeObjectFactory.createXPartitionList(toXPartitionList(xp)))
+          {},
+          mediaType),
           APIResult.class);
       assertSuccess(partAddResult);
 
@@ -2367,7 +2410,8 @@ public class TestMetastoreService extends LensJerseyTest {
       // add again, this time we'll drop by filter
       partAddResult = target().path("metastore/dimtables/").path(table).path("storages/test/partitions")
         .queryParam("sessionid", lensSessionId).request(mediaType)
-        .post(Entity.xml(cubeObjectFactory.createXPartitionList(toXPartitionList(xp))),
+        .post(Entity.entity(new GenericEntity<JAXBElement<XPartitionList>>(
+            cubeObjectFactory.createXPartitionList(toXPartitionList(xp))){}, mediaType),
           APIResult.class);
       assertSuccess(partAddResult);
 
@@ -2386,17 +2430,19 @@ public class TestMetastoreService extends LensJerseyTest {
       assertNotNull(partitions);
       assertEquals(partitions.getPartition().size(), 0);
     } finally {
-      setCurrentDatabase(prevDb);
-      dropDatabase(DB);
+      setCurrentDatabase(prevDb, mediaType);
+      dropDatabase(DB, mediaType);
     }
   }
 
-  private void assertXMLError(Response resp) {
+  private void assertXMLError(Response resp, MediaType mt) {
     assertEquals(resp.getStatus(), 400);
-    LensAPIResult entity = resp.readEntity(LensAPIResult.class);
-    assertTrue(entity.isErrorResult());
-    assertEquals(entity.getLensErrorTO().getCode(), LensCommonErrorCode.INVALID_XML_ERROR.getValue());
-    assertTrue(entity.getLensErrorTO().getMessage().contains("unexpected element"));
+    if (mt.equals(MediaType.APPLICATION_XML_TYPE)) {
+      LensAPIResult entity = resp.readEntity(LensAPIResult.class);
+      assertTrue(entity.isErrorResult());
+      assertEquals(entity.getLensErrorTO().getCode(), LensCommonErrorCode.INVALID_XML_ERROR.getValue());
+      assertTrue(entity.getLensErrorTO().getMessage().contains("unexpected element"));
+    }
   }
 
   private XPartitionList toXPartitionList(final XPartition... xps) {
@@ -2405,12 +2451,12 @@ public class TestMetastoreService extends LensJerseyTest {
     return ret;
   }
 
-  @Test
-  public void testNativeTables() throws Exception {
-    final String DB = dbPFX + "test_native_tables";
-    String prevDb = getCurrentDatabase();
-    createDatabase(DB);
-    setCurrentDatabase(DB);
+  @Test(dataProvider = "mediaTypeData")
+  public void testNativeTables(MediaType mediaType) throws Exception {
+    final String DB = dbPFX + "test_native_tables" + mediaType.getSubtype();
+    String prevDb = getCurrentDatabase(mediaType);
+    createDatabase(DB, mediaType);
+    setCurrentDatabase(DB, mediaType);
 
     try {
       // create hive table
@@ -2498,7 +2544,8 @@ public class TestMetastoreService extends LensJerseyTest {
       JAXBElement<XCube> element = cubeObjectFactory.createXCube(cube);
       APIResult result =
         target().path("metastore").path("cubes").queryParam("sessionid",
-          lensSessionId).request(mediaType).post(Entity.xml(element), APIResult.class);
+          lensSessionId).request(mediaType).post(Entity.entity(new GenericEntity<JAXBElement<XCube>>(element){},
+          mediaType), APIResult.class);
       assertSuccess(result);
 
       // get a cube table
@@ -2521,8 +2568,8 @@ public class TestMetastoreService extends LensJerseyTest {
         .queryParam("dbName", "nonexisting").request(mediaType).get(Response.class);
       assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
     } finally {
-      dropDatabase(DB);
-      setCurrentDatabase(prevDb);
+      dropDatabase(DB, mediaType);
+      setCurrentDatabase(prevDb, mediaType);
     }
   }
 
@@ -2543,12 +2590,12 @@ public class TestMetastoreService extends LensJerseyTest {
     }
   }
 
-  @Test
-  public void testFlattenedView() throws Exception {
-    final String DB = dbPFX + "test_flattened_view";
-    String prevDb = getCurrentDatabase();
-    createDatabase(DB);
-    setCurrentDatabase(DB);
+  @Test(dataProvider = "mediaTypeData")
+  public void testFlattenedView(MediaType mediaType) throws Exception {
+    final String DB = dbPFX + "test_flattened_view" + mediaType.getSubtype();
+    String prevDb = getCurrentDatabase(mediaType);
+    createDatabase(DB, mediaType);
+    setCurrentDatabase(DB, mediaType);
 
     try {
       // Create the tables
@@ -2557,12 +2604,13 @@ public class TestMetastoreService extends LensJerseyTest {
       final WebTarget cubeTarget = target().path("metastore").path("cubes");
       APIResult result =
         cubeTarget.queryParam("sessionid", lensSessionId).request(mediaType)
-          .post(Entity.xml(cubeObjectFactory.createXCube(flatTestCube)), APIResult.class);
+          .post(Entity.entity(new GenericEntity<JAXBElement<XCube>>(cubeObjectFactory.createXCube(flatTestCube)){},
+            mediaType), APIResult.class);
       assertNotNull(result);
       assertSuccess(result);
 
       // create chained dimensions - testdim and testdim2
-      createdChainedDimensions();
+      createdChainedDimensions(mediaType);
 
       // Now test flattened view
       final WebTarget flatCubeTarget = target().path("metastore").path("flattened").path("flattestcube");
@@ -2630,13 +2678,13 @@ public class TestMetastoreService extends LensJerseyTest {
       ));
 
     } finally {
-      dropDatabase(DB);
-      setCurrentDatabase(prevDb);
+      dropDatabase(DB, mediaType);
+      setCurrentDatabase(prevDb, mediaType);
     }
   }
 
   private void createTestFactAndStorageTable(final String cubeName, final String[] storages, final String tableName,
-    final String[] timePartColNames) {
+    final String[] timePartColNames, MediaType mediaType) {
 
     // Create a fact table object linked to cubeName
     XFactTable f = createFactTable(tableName, cubeName);
@@ -2647,17 +2695,14 @@ public class TestMetastoreService extends LensJerseyTest {
     }
 
     // Call API to create a fact table and storage table
-    final FormDataMultiPart mp = new FormDataMultiPart();
-    mp.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("sessionid").build(),
-      lensSessionId, medType));
-    mp.bodyPart(new FormDataBodyPart(
-      FormDataContentDisposition.name("fact").fileName("fact").build(),
-      cubeObjectFactory.createXFactTable(f), medType));
     APIResult result = target()
       .path("metastore")
-      .path("facts")
+      .path("facts").queryParam("sessionid", lensSessionId)
       .request(mediaType)
-      .post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE), APIResult.class);
+      .post(Entity.entity(
+          new GenericEntity<JAXBElement<XFactTable>>(cubeObjectFactory.createXFactTable(f)) {
+          }, mediaType),
+        APIResult.class);
     assertSuccess(result);
   }
 

http://git-wip-us.apache.org/repos/asf/lens/blob/d559ef2e/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreServiceJSON.java
----------------------------------------------------------------------
diff --git a/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreServiceJSON.java b/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreServiceJSON.java
deleted file mode 100644
index 85580da..0000000
--- a/lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreServiceJSON.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.lens.server.metastore;
-
-
-public class TestMetastoreServiceJSON { //extends TestMetastoreService {
-  /*public TestMetastoreServiceJSON() {
-    super();
-    mediaType = MediaType.APPLICATION_JSON;
-    dbPFX = "TestMetastoreServiceJSON_";
-  }*/
-}

http://git-wip-us.apache.org/repos/asf/lens/blob/d559ef2e/lens-server/src/test/java/org/apache/lens/server/metrics/TestResourceMethodMetrics.java
----------------------------------------------------------------------
diff --git a/lens-server/src/test/java/org/apache/lens/server/metrics/TestResourceMethodMetrics.java b/lens-server/src/test/java/org/apache/lens/server/metrics/TestResourceMethodMetrics.java
index 515ac13..c20ddf8 100644
--- a/lens-server/src/test/java/org/apache/lens/server/metrics/TestResourceMethodMetrics.java
+++ b/lens-server/src/test/java/org/apache/lens/server/metrics/TestResourceMethodMetrics.java
@@ -50,11 +50,10 @@ import org.apache.lens.server.common.TestResourceFile;
 import org.apache.lens.server.metastore.CubeMetastoreServiceImpl;
 import org.apache.lens.server.query.TestQueryService;
 
-import org.glassfish.jersey.client.ClientConfig;
 import org.glassfish.jersey.media.multipart.FormDataBodyPart;
 import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
 import org.glassfish.jersey.media.multipart.FormDataMultiPart;
-import org.glassfish.jersey.media.multipart.MultiPartFeature;
+import org.glassfish.jersey.test.TestProperties;
 import org.testng.Assert;
 import org.testng.annotations.AfterTest;
 import org.testng.annotations.BeforeTest;
@@ -87,16 +86,16 @@ public class TestResourceMethodMetrics extends LensAllApplicationJerseyTest {
   }
 
   private void createTable(String tblName) throws InterruptedException {
-    LensServerTestUtil.createTable(tblName, target(), lensSessionId);
+    LensServerTestUtil.createTable(tblName, target(), lensSessionId, defaultMT);
   }
 
   private void loadData(String tblName, final String testDataFile) throws InterruptedException {
-    LensServerTestUtil.loadDataFromClasspath(tblName, testDataFile, target(), lensSessionId);
+    LensServerTestUtil.loadDataFromClasspath(tblName, testDataFile, target(), lensSessionId, defaultMT);
   }
 
   @AfterTest
   public void tearDown() throws Exception {
-    LensServerTestUtil.dropTable(TestQueryService.TEST_TABLE, target(), lensSessionId);
+    LensServerTestUtil.dropTable(TestQueryService.TEST_TABLE, target(), lensSessionId, defaultMT);
     metastoreService.closeSession(lensSessionId);
     super.tearDown();
   }
@@ -110,14 +109,11 @@ public class TestResourceMethodMetrics extends LensAllApplicationJerseyTest {
 
   @Override
   protected Application configure() {
+    enable(TestProperties.LOG_TRAFFIC);
+    enable(TestProperties.DUMP_ENTITY);
     return new LensApplication();
   }
 
-  @Override
-  protected void configureClient(ClientConfig config) {
-    config.register(MultiPartFeature.class);
-  }
-
   @Test
   public void test() throws Exception {
     boolean enabled = metricsSvc.isEnableResourceMethodMetering();
@@ -241,7 +237,7 @@ public class TestResourceMethodMetrics extends LensAllApplicationJerseyTest {
     mp.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("operation").build(), "execute"));
     mp.bodyPart(new FormDataBodyPart(FormDataContentDisposition.name("conf").fileName("conf").build(), new LensConf(),
       MediaType.APPLICATION_XML_TYPE));
-    final QueryHandle handle = target.request().post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE),
+    final QueryHandle handle = target.request(mediaType).post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE),
         new GenericType<LensAPIResult<QueryHandle>>() {}).getData();
 
     Assert.assertNotNull(handle);