Repository: lens
Updated Branches:
  refs/heads/master 4fa61d994 -> 8108ba062


LENS-1283 : Map failure in APIResult to exception in LensClient


Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/8108ba06
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/8108ba06
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/8108ba06

Branch: refs/heads/master
Commit: 8108ba0625a477a15a7c7cbc65d73157ad83be14
Parents: 4fa61d9
Author: Rajat Khandelwal <pro...@apache.org>
Authored: Wed Sep 21 09:39:16 2016 +0530
Committer: Amareshwari Sriramadasu <amareshw...@apache.org>
Committed: Wed Sep 21 09:39:16 2016 +0530

----------------------------------------------------------------------
 .../java/org/apache/lens/api/APIResult.java     |  27 ++-
 .../java/org/apache/lens/api/ToYAMLString.java  |   5 +-
 .../lens/api/jaxb/YAMLToStringStrategyTest.java |  14 +-
 ...lens.api.query.QueryHandleWithResultSet.yaml |   2 +-
 .../apache/lens/cli/LensCliApplicationTest.java |   2 +-
 .../lens/cli/TestLensDatabaseCommands.java      |   9 +-
 .../apache/lens/client/LensMetadataClient.java  | 203 ++++++++++---------
 .../exceptions/LensBriefErrorException.java     |   5 +
 .../lens/client/model/IdBriefErrorTemplate.java |  22 +-
 .../client/model/IdBriefErrorTemplateTest.java  |   4 +-
 .../examples/ExampleSchemaToStringTest.java     |   8 +-
 11 files changed, 163 insertions(+), 138 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lens/blob/8108ba06/lens-api/src/main/java/org/apache/lens/api/APIResult.java
----------------------------------------------------------------------
diff --git a/lens-api/src/main/java/org/apache/lens/api/APIResult.java 
b/lens-api/src/main/java/org/apache/lens/api/APIResult.java
index e147fec..cba564e 100644
--- a/lens-api/src/main/java/org/apache/lens/api/APIResult.java
+++ b/lens-api/src/main/java/org/apache/lens/api/APIResult.java
@@ -20,6 +20,8 @@ package org.apache.lens.api;
 
 import javax.xml.bind.annotation.*;
 
+import org.apache.commons.lang.StringUtils;
+
 import lombok.AccessLevel;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
@@ -74,7 +76,7 @@ public class APIResult extends ToYAMLString {
     FAILED
   }
 
-  private static final APIResult SUCCESS = new APIResult(Status.SUCCEEDED, "");
+  private static final APIResult SUCCESS = new APIResult(Status.SUCCEEDED, 
null);
 
   public static APIResult partial(int actual, int expected) {
     return new APIResult(Status.PARTIAL, actual + " out of " + expected);
@@ -113,13 +115,22 @@ public class APIResult extends ToYAMLString {
   }
 
   private static String extractCause(Throwable e) {
-    StringBuilder cause = new StringBuilder();
-    String sep = "";
-    while (e != null) {
-      cause.append(sep).append(e.getMessage());
-      e = e.getCause();
-      sep = ": ";
+    if (e == null) {
+      return null;
+    }
+    if (e.getCause() != null) {
+      String causeMessage = extractCause(e.getCause());
+      if (StringUtils.isBlank(e.getMessage())) {
+        return causeMessage;
+      } else {
+        if (e.getMessage().contains(causeMessage)) {
+          return causeMessage;
+        } else {
+          return e.getMessage() + ": " + causeMessage;
+        }
+      }
+    } else {
+      return e.getMessage();
     }
-    return cause.toString();
   }
 }

http://git-wip-us.apache.org/repos/asf/lens/blob/8108ba06/lens-api/src/main/java/org/apache/lens/api/ToYAMLString.java
----------------------------------------------------------------------
diff --git a/lens-api/src/main/java/org/apache/lens/api/ToYAMLString.java 
b/lens-api/src/main/java/org/apache/lens/api/ToYAMLString.java
index 65a0c44..ea8e8d1 100644
--- a/lens-api/src/main/java/org/apache/lens/api/ToYAMLString.java
+++ b/lens-api/src/main/java/org/apache/lens/api/ToYAMLString.java
@@ -68,7 +68,10 @@ public abstract class ToYAMLString implements ToString {
       for (Field field : this.getClass().getDeclaredFields()) {
         try {
           Method getter = getGetter(field);
-          fieldNameAndValueList.add(new 
FieldNameAndValue(getReadableName(getter), getter.invoke(this)));
+          Object value = getter.invoke(this);
+          if (value != null) {
+            fieldNameAndValueList.add(new 
FieldNameAndValue(getReadableName(getter), value));
+          }
         } catch (IllegalAccessException | InvocationTargetException e) {
           throw new RuntimeException(e);
         } catch (NoSuchMethodException e) {

http://git-wip-us.apache.org/repos/asf/lens/blob/8108ba06/lens-api/src/test/java/org/apache/lens/api/jaxb/YAMLToStringStrategyTest.java
----------------------------------------------------------------------
diff --git 
a/lens-api/src/test/java/org/apache/lens/api/jaxb/YAMLToStringStrategyTest.java 
b/lens-api/src/test/java/org/apache/lens/api/jaxb/YAMLToStringStrategyTest.java
index 3a784f8..04d9ad6 100644
--- 
a/lens-api/src/test/java/org/apache/lens/api/jaxb/YAMLToStringStrategyTest.java
+++ 
b/lens-api/src/test/java/org/apache/lens/api/jaxb/YAMLToStringStrategyTest.java
@@ -33,6 +33,7 @@ import org.testng.annotations.Test;
 
 import com.google.common.collect.Lists;
 import lombok.Data;
+import lombok.RequiredArgsConstructor;
 
 public class YAMLToStringStrategyTest {
   String timeZone;
@@ -108,12 +109,21 @@ public class YAMLToStringStrategyTest {
   }
 
   @Data
+  @RequiredArgsConstructor
   public static class ToStringTestData {
     private final String name;
     private final Object object;
     private final String toString;
+    private Throwable throwable;
 
-    public void verify() {
+    public ToStringTestData(String name, Throwable th) {
+      this(name, null, null);
+      this.throwable = th;
+    }
+    public void verify() throws Throwable {
+      if (this.throwable != null) {
+        throw throwable;
+      }
       Assert.assertEquals(object.toString().trim(), toString.trim(), "toString 
didn't match for " + name);
     }
   }
@@ -147,7 +157,7 @@ public class YAMLToStringStrategyTest {
   }
 
   @Test(dataProvider = "toStringDataProvider")
-  public void testToString(ToStringTestData testData) {
+  public void testToString(ToStringTestData testData) throws Throwable {
     testData.verify();
   }
 

http://git-wip-us.apache.org/repos/asf/lens/blob/8108ba06/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryHandleWithResultSet.yaml
----------------------------------------------------------------------
diff --git 
a/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryHandleWithResultSet.yaml
 
b/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryHandleWithResultSet.yaml
index dfa33d2..eb0f951 100644
--- 
a/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryHandleWithResultSet.yaml
+++ 
b/lens-api/src/test/resources/toString/org.apache.lens.api.query.QueryHandleWithResultSet.yaml
@@ -13,4 +13,4 @@
 # 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.
-Query Handle: 28be0bb7-f675-4065-9de4-0c0be6e39068
+28be0bb7-f675-4065-9de4-0c0be6e39068

http://git-wip-us.apache.org/repos/asf/lens/blob/8108ba06/lens-cli/src/test/java/org/apache/lens/cli/LensCliApplicationTest.java
----------------------------------------------------------------------
diff --git 
a/lens-cli/src/test/java/org/apache/lens/cli/LensCliApplicationTest.java 
b/lens-cli/src/test/java/org/apache/lens/cli/LensCliApplicationTest.java
index c536ed6..5100b74 100644
--- a/lens-cli/src/test/java/org/apache/lens/cli/LensCliApplicationTest.java
+++ b/lens-cli/src/test/java/org/apache/lens/cli/LensCliApplicationTest.java
@@ -31,7 +31,7 @@ import org.testng.annotations.BeforeTest;
  * The Class LensCliApplicationTest.
  */
 public class LensCliApplicationTest extends LensAllApplicationJerseyTest {
-  public static final String SUCCESS_MESSAGE = "status: succeeded\n";
+  public static final String SUCCESS_MESSAGE = "succeeded";
 
   @Override
   protected int getTestPort() {

http://git-wip-us.apache.org/repos/asf/lens/blob/8108ba06/lens-cli/src/test/java/org/apache/lens/cli/TestLensDatabaseCommands.java
----------------------------------------------------------------------
diff --git 
a/lens-cli/src/test/java/org/apache/lens/cli/TestLensDatabaseCommands.java 
b/lens-cli/src/test/java/org/apache/lens/cli/TestLensDatabaseCommands.java
index 41672ac..9687c60 100644
--- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensDatabaseCommands.java
+++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensDatabaseCommands.java
@@ -23,12 +23,10 @@ import static org.testng.Assert.*;
 import java.io.File;
 import java.net.URISyntaxException;
 
-import javax.ws.rs.InternalServerErrorException;
-
-import org.apache.lens.api.APIResult;
 import org.apache.lens.cli.commands.LensCubeCommands;
 import org.apache.lens.cli.commands.LensDatabaseCommands;
 import org.apache.lens.client.LensClient;
+import org.apache.lens.client.exceptions.LensBriefErrorException;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -82,9 +80,8 @@ public class TestLensDatabaseCommands extends 
LensCliApplicationTest {
       try {
         command.dropDatabase(myDatabase, false);
         fail("Should have failed");
-      } catch(InternalServerErrorException ignored) {
-        APIResult apiResult = 
ignored.getResponse().readEntity(APIResult.class);
-        assertTrue(apiResult.getMessage().contains("my_db is not empty"));
+      } catch(LensBriefErrorException e) {
+        
assertTrue(e.getIdBriefErrorTemplate().getBriefError().toPrettyString().contains("my_db
 is not empty"));
       }
     }
     result = command.dropDatabase(myDatabase, cascade);

http://git-wip-us.apache.org/repos/asf/lens/blob/8108ba06/lens-client/src/main/java/org/apache/lens/client/LensMetadataClient.java
----------------------------------------------------------------------
diff --git 
a/lens-client/src/main/java/org/apache/lens/client/LensMetadataClient.java 
b/lens-client/src/main/java/org/apache/lens/client/LensMetadataClient.java
index a1a78c5..f077c9c 100644
--- a/lens-client/src/main/java/org/apache/lens/client/LensMetadataClient.java
+++ b/lens-client/src/main/java/org/apache/lens/client/LensMetadataClient.java
@@ -26,6 +26,7 @@ import javax.ws.rs.client.*;
 import javax.ws.rs.core.GenericEntity;
 import javax.ws.rs.core.GenericType;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 import javax.xml.bind.*;
 
 import org.apache.lens.api.APIResult;
@@ -33,6 +34,9 @@ import org.apache.lens.api.DateTime;
 import org.apache.lens.api.StringList;
 import org.apache.lens.api.jaxb.LensJAXBContext;
 import org.apache.lens.api.metastore.*;
+import org.apache.lens.client.exceptions.LensBriefErrorException;
+import org.apache.lens.client.model.BriefError;
+import org.apache.lens.client.model.IdBriefErrorTemplate;
 
 import com.google.common.base.Joiner;
 import lombok.extern.slf4j.Slf4j;
@@ -48,7 +52,6 @@ public class LensMetadataClient {
     this.connection = connection;
     this.params = connection.getLensConnectionParams();
     objFact = new ObjectFactory();
-
   }
 
   private WebTarget getMetastoreWebTarget(Client client) {
@@ -61,6 +64,16 @@ public class LensMetadataClient {
     return getMetastoreWebTarget(connection.buildClient());
   }
 
+  private APIResult translate(Response response) {
+    if (response.getStatusInfo().getFamily() == 
Response.Status.Family.SUCCESSFUL) {
+      return response.readEntity(APIResult.class);
+    } else {
+      APIResult result = response.readEntity(APIResult.class);
+      throw new LensBriefErrorException(new IdBriefErrorTemplate(null, null,
+        new BriefError(response.getStatus(), result.getMessage())));
+    }
+  }
+
   public List<String> getAlldatabases() {
     WebTarget target = getMetastoreWebTarget();
     StringList databases = target.path("databases")
@@ -79,19 +92,19 @@ public class LensMetadataClient {
 
   public APIResult setDatabase(String database) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("databases").path("current")
+    return translate(target.path("databases").path("current")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML_TYPE)
-      .put(Entity.xml(database), APIResult.class);
+      .put(Entity.xml(database)));
   }
 
   public APIResult createDatabase(String database, boolean ignoreIfExists) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("databases")
+    return translate(target.path("databases")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .queryParam("ignoreIfExisting", ignoreIfExists)
       .request(MediaType.APPLICATION_XML)
-      .post(Entity.xml(database), APIResult.class);
+      .post(Entity.xml(database)));
   }
 
   public APIResult createDatabase(String database) {
@@ -100,10 +113,10 @@ public class LensMetadataClient {
 
   public APIResult dropDatabase(String database, boolean cascade) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("databases").path(database)
+    return translate(target.path("databases").path(database)
       .queryParam("sessionid", this.connection.getSessionHandle())
       .queryParam("cascade", cascade)
-      .request().delete(APIResult.class);
+      .request().delete());
   }
 
   public APIResult dropDatabase(String database) {
@@ -137,17 +150,17 @@ public class LensMetadataClient {
 
   public APIResult dropAllCubes() {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("cubes")
+    return translate(target.path("cubes")
       .queryParam("sessionid", this.connection.getSessionHandle())
-      .request(MediaType.APPLICATION_XML).delete(APIResult.class);
+      .request(MediaType.APPLICATION_XML).delete());
   }
 
   public APIResult createCube(XCube cube) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("cubes")
+    return translate(target.path("cubes")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .post(Entity.xml(new 
GenericEntity<JAXBElement<XCube>>(objFact.createXCube(cube)){}), 
APIResult.class);
+      .post(Entity.xml(new 
GenericEntity<JAXBElement<XCube>>(objFact.createXCube(cube)){})));
   }
 
   private <T> T readFromXML(String filename) throws JAXBException, IOException 
{
@@ -164,10 +177,10 @@ public class LensMetadataClient {
 
   public APIResult updateCube(String cubeName, XCube cube) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("cubes").path(cubeName)
+    return translate(target.path("cubes").path(cubeName)
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .put(Entity.xml(new 
GenericEntity<JAXBElement<XCube>>(objFact.createXCube(cube)){}), 
APIResult.class);
+      .put(Entity.xml(new 
GenericEntity<JAXBElement<XCube>>(objFact.createXCube(cube)){})));
   }
 
   public APIResult updateCube(String cubeName, String cubeSpec) {
@@ -208,9 +221,9 @@ public class LensMetadataClient {
 
   public APIResult dropCube(String cubeName) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("cubes").path(cubeName)
+    return translate(target.path("cubes").path(cubeName)
       .queryParam("sessionid", this.connection.getSessionHandle())
-      .request(MediaType.APPLICATION_XML).delete(APIResult.class);
+      .request(MediaType.APPLICATION_XML).delete());
   }
 
   public List<String> getAllDimensions() {
@@ -223,18 +236,17 @@ public class LensMetadataClient {
 
   public APIResult dropAllDimensions() {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("dimensions")
+    return translate(target.path("dimensions")
       .queryParam("sessionid", this.connection.getSessionHandle())
-      .request(MediaType.APPLICATION_XML).delete(APIResult.class);
+      .request(MediaType.APPLICATION_XML).delete());
   }
 
   public APIResult createDimension(XDimension dimension) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("dimensions")
+    return translate(target.path("dimensions")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .post(Entity.xml(new 
GenericEntity<JAXBElement<XDimension>>(objFact.createXDimension(dimension)){}),
-        APIResult.class);
+      .post(Entity.xml(new 
GenericEntity<JAXBElement<XDimension>>(objFact.createXDimension(dimension)){})));
   }
 
   public APIResult createDimension(String dimSpec) {
@@ -247,11 +259,10 @@ public class LensMetadataClient {
 
   public APIResult updateDimension(String dimName, XDimension dimension) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("dimensions").path(dimName)
+    return translate(target.path("dimensions").path(dimName)
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .put(Entity.xml(new 
GenericEntity<JAXBElement<XDimension>>(objFact.createXDimension(dimension)){}),
-        APIResult.class);
+      .put(Entity.xml(new 
GenericEntity<JAXBElement<XDimension>>(objFact.createXDimension(dimension)){})));
   }
 
   public APIResult updateDimension(String dimName, String dimSpec) {
@@ -273,9 +284,9 @@ public class LensMetadataClient {
 
   public APIResult dropDimension(String dimName) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("dimensions").path(dimName)
+    return translate(target.path("dimensions").path(dimName)
       .queryParam("sessionid", this.connection.getSessionHandle())
-      .request(MediaType.APPLICATION_XML).delete(APIResult.class);
+      .request(MediaType.APPLICATION_XML).delete());
   }
 
   public List<String> getAllStorages() {
@@ -289,10 +300,10 @@ public class LensMetadataClient {
 
   public APIResult createNewStorage(XStorage storage) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("storages")
+    return translate(target.path("storages")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .post(Entity.xml(new 
GenericEntity<JAXBElement<XStorage>>(objFact.createXStorage(storage)){}), 
APIResult.class);
+      .post(Entity.xml(new 
GenericEntity<JAXBElement<XStorage>>(objFact.createXStorage(storage)){})));
   }
 
 
@@ -306,18 +317,18 @@ public class LensMetadataClient {
 
   public APIResult dropAllStorages() {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("storages")
+    return translate(target.path("storages")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .delete(APIResult.class);
+      .delete());
   }
 
   public APIResult updateStorage(String storageName, XStorage storage) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("storages").path(storageName)
+    return translate(target.path("storages").path(storageName)
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .put(Entity.xml(new 
GenericEntity<JAXBElement<XStorage>>(objFact.createXStorage(storage)){}), 
APIResult.class);
+      .put(Entity.xml(new 
GenericEntity<JAXBElement<XStorage>>(objFact.createXStorage(storage)){})));
   }
 
   public APIResult updateStorage(String storageName, String storage) {
@@ -340,10 +351,10 @@ public class LensMetadataClient {
 
   public APIResult dropStorage(String storageName) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("storages").path(storageName)
+    return translate(target.path("storages").path(storageName)
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .delete(APIResult.class);
+      .delete());
   }
 
   public List<String> getAllFactTables(String cubeName) {
@@ -398,20 +409,20 @@ public class LensMetadataClient {
 
   public APIResult deleteAllFactTables(boolean cascade) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("facts")
+    return translate(target.path("facts")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .queryParam("cascade", cascade)
       .request(MediaType.APPLICATION_XML)
-      .delete(APIResult.class);
+      .delete());
   }
 
 
   public APIResult deleteAllSegmentations() {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("segmentations")
+    return translate(target.path("segmentations")
             .queryParam("sessionid", this.connection.getSessionHandle())
             .request(MediaType.APPLICATION_XML)
-            .delete(APIResult.class);
+            .delete());
   }
 
   public XFactTable getFactTable(String factTableName) {
@@ -436,10 +447,10 @@ public class LensMetadataClient {
 
   public APIResult createFactTable(XFactTable f) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("facts")
+    return translate(target.path("facts")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .post(Entity.xml(new 
GenericEntity<JAXBElement<XFactTable>>(objFact.createXFactTable(f)){}), 
APIResult.class);
+      .post(Entity.xml(new 
GenericEntity<JAXBElement<XFactTable>>(objFact.createXFactTable(f)){})));
   }
 
   public APIResult createFactTable(String factSpec) {
@@ -452,11 +463,11 @@ public class LensMetadataClient {
 
   public APIResult createSegmentation(XSegmentation seg) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("segmentations")
+    return translate(target.path("segmentations")
             .queryParam("sessionid", this.connection.getSessionHandle())
             .request(MediaType.APPLICATION_XML)
             .post(Entity.xml(new 
GenericEntity<JAXBElement<XSegmentation>>(objFact
-                    .createXSegmentation(seg)){}), APIResult.class);
+                    .createXSegmentation(seg)){})));
   }
 
   public APIResult createSegmentation(String segSpec) {
@@ -469,10 +480,10 @@ public class LensMetadataClient {
 
   public APIResult updateFactTable(String factName, XFactTable table) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("facts").path(factName)
+    return translate(target.path("facts").path(factName)
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML_TYPE)
-      .put(Entity.xml(new 
GenericEntity<JAXBElement<XFactTable>>(objFact.createXFactTable(table)){}), 
APIResult.class);
+      .put(Entity.xml(new 
GenericEntity<JAXBElement<XFactTable>>(objFact.createXFactTable(table)){})));
   }
 
   public APIResult updateFactTable(String factName, String table) {
@@ -485,11 +496,11 @@ public class LensMetadataClient {
 
   public APIResult updateSegmentation(String segName, XSegmentation seg) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("segmentations").path(segName)
+    return translate(target.path("segmentations").path(segName)
             .queryParam("sessionid", this.connection.getSessionHandle())
             .request(MediaType.APPLICATION_XML_TYPE)
             .put(Entity.xml(new 
GenericEntity<JAXBElement<XSegmentation>>(objFact.
-                    createXSegmentation(seg)){}), APIResult.class);
+                    createXSegmentation(seg)){})));
   }
 
   public APIResult updateSegmentation(String segName, String seg) {
@@ -503,11 +514,11 @@ public class LensMetadataClient {
 
   public APIResult dropFactTable(String factName, boolean cascade) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("facts").path(factName)
+    return translate(target.path("facts").path(factName)
       .queryParam("sessionid", this.connection.getSessionHandle())
       .queryParam("cascade", cascade)
       .request(MediaType.APPLICATION_XML)
-      .delete(APIResult.class);
+      .delete());
   }
 
   public APIResult dropFactTable(String factName) {
@@ -516,10 +527,10 @@ public class LensMetadataClient {
 
   public APIResult dropSegmentation(String segName) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("segmentations").path(segName)
+    return translate(target.path("segmentations").path(segName)
             .queryParam("sessionid", this.connection.getSessionHandle())
             .request(MediaType.APPLICATION_XML)
-            .delete(APIResult.class);
+            .delete());
   }
 
   public List<String> getAllStoragesOfFactTable(String factName) {
@@ -533,19 +544,19 @@ public class LensMetadataClient {
 
   public APIResult dropAllStoragesOfFactTable(String factName) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("facts").path(factName).path("storages")
+    return translate(target.path("facts").path(factName).path("storages")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .delete(APIResult.class);
+      .delete());
   }
 
   public APIResult addStorageToFactTable(String factname, XStorageTableElement 
storage) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("facts").path(factname).path("storages")
+    return translate(target.path("facts").path(factname).path("storages")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
       .post(Entity.xml(new GenericEntity<JAXBElement<XStorageTableElement>>(
-        objFact.createXStorageTableElement(storage)){}), APIResult.class);
+        objFact.createXStorageTableElement(storage)){})));
   }
 
   public APIResult addStorageToFactTable(String factname, String storageSpec) {
@@ -558,10 +569,10 @@ public class LensMetadataClient {
 
   public APIResult dropStorageFromFactTable(String factName, String 
storageName) {
     WebTarget target = getMetastoreWebTarget();
-    return 
target.path("facts").path(factName).path("storages").path(storageName)
+    return 
translate(target.path("facts").path(factName).path("storages").path(storageName)
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .delete(APIResult.class);
+      .delete());
   }
 
   public XStorageTableElement getStorageOfFactTable(String factName, String 
storageName) {
@@ -593,12 +604,12 @@ public class LensMetadataClient {
 
   public APIResult dropPartitionsOfFactTable(String factName, String storage, 
String filter) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("facts").path(factName)
+    return translate(target.path("facts").path(factName)
       .path("storages").path(storage).path("partitions")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .queryParam("filter", filter)
       .request(MediaType.APPLICATION_XML)
-      .delete(APIResult.class);
+      .delete());
   }
 
   public APIResult dropPartitionsOfFactTable(String factName, String storage) {
@@ -610,12 +621,12 @@ public class LensMetadataClient {
     String values = Joiner.on(",").skipNulls().join(partitions);
 
     WebTarget target = getMetastoreWebTarget();
-    return target.path("facts").path(factName)
+    return translate(target.path("facts").path(factName)
       .path("storages").path(storage).path("partitions")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .queryParam("values", values)
       .request(MediaType.APPLICATION_XML)
-      .delete(APIResult.class);
+      .delete());
   }
 
 
@@ -644,11 +655,10 @@ public class LensMetadataClient {
 
   public APIResult createDimensionTable(XDimensionTable table) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("dimtables")
+    return translate(target.path("dimtables")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .post(Entity.xml(new 
GenericEntity<JAXBElement<XDimensionTable>>(objFact.createXDimensionTable(table)){}),
-        APIResult.class);
+      .post(Entity.xml(new 
GenericEntity<JAXBElement<XDimensionTable>>(objFact.createXDimensionTable(table)){})));
   }
 
   public APIResult createDimensionTable(String tableXml) {
@@ -663,11 +673,10 @@ public class LensMetadataClient {
   public APIResult updateDimensionTable(XDimensionTable table) {
     String dimTableName = table.getTableName();
     WebTarget target = getMetastoreWebTarget();
-    return target.path("dimtables").path(dimTableName)
+    return translate(target.path("dimtables").path(dimTableName)
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .put(Entity.xml(new 
GenericEntity<JAXBElement<XDimensionTable>>(objFact.createXDimensionTable(table)){}),
-        APIResult.class);
+      .put(Entity.xml(new 
GenericEntity<JAXBElement<XDimensionTable>>(objFact.createXDimensionTable(table)){})));
   }
 
   public APIResult updateDimensionTable(String dimTblName, String dimSpec) {
@@ -682,11 +691,11 @@ public class LensMetadataClient {
 
   public APIResult dropDimensionTable(String table, boolean cascade) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("dimtables").path(table)
+    return translate(target.path("dimtables").path(table)
       .queryParam("sessionid", this.connection.getSessionHandle())
       .queryParam("cascade", cascade)
       .request(MediaType.APPLICATION_XML)
-      .delete(APIResult.class);
+      .delete());
   }
 
   public APIResult dropDimensionTable(String table) {
@@ -715,11 +724,11 @@ public class LensMetadataClient {
 
   public APIResult addStorageToDimTable(String dimTblName, 
XStorageTableElement table) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("dimtables").path(dimTblName).path("storages")
+    return translate(target.path("dimtables").path(dimTblName).path("storages")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
       .post(Entity.xml(new GenericEntity<JAXBElement<XStorageTableElement>>(
-        objFact.createXStorageTableElement(table)){}), APIResult.class);
+        objFact.createXStorageTableElement(table)){})));
   }
 
   public APIResult addStorageToDimTable(String dimTblName, String table) {
@@ -743,20 +752,20 @@ public class LensMetadataClient {
 
   public APIResult dropAllStoragesOfDimension(String dimTblName) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("dimtables").path(dimTblName).path("storages")
+    return translate(target.path("dimtables").path(dimTblName).path("storages")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .delete(APIResult.class);
+      .delete());
   }
 
 
   public APIResult dropStoragesOfDimensionTable(String dimTblName, String 
storage) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("dimtables").path(dimTblName)
+    return translate(target.path("dimtables").path(dimTblName)
       .path("storages").path(storage)
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .delete(APIResult.class);
+      .delete());
   }
 
   public List<XPartition> getAllPartitionsOfDimensionTable(String dimTblName, 
String storage,
@@ -779,12 +788,12 @@ public class LensMetadataClient {
   public APIResult dropAllPartitionsOfDimensionTable(String dimTblName, String 
storage,
     String filter) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("dimtables").path(dimTblName)
+    return translate(target.path("dimtables").path(dimTblName)
       .path("storages").path(storage).path("partitions")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .queryParam("filter", filter)
       .request(MediaType.APPLICATION_XML)
-      .delete(APIResult.class);
+      .delete());
   }
 
   public APIResult dropAllPartitionsOfDimensionTable(String dimTblName, String 
storage) {
@@ -795,23 +804,22 @@ public class LensMetadataClient {
     List<String> vals) {
     String values = Joiner.on(",").skipNulls().join(vals);
     WebTarget target = getMetastoreWebTarget();
-    return target.path("dimtables").path(dimTblName)
+    return translate(target.path("dimtables").path(dimTblName)
       .path("storages").path(storage).path("partitions")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .queryParam("values", values)
       .request(MediaType.APPLICATION_XML)
-      .delete(APIResult.class);
+      .delete());
   }
 
   public APIResult addPartitionToDimensionTable(String dimTblName, String 
storage,
     XPartition partition) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("dimtables").path(dimTblName)
+    return translate(target.path("dimtables").path(dimTblName)
       .path("storages").path(storage).path("partition")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .post(Entity.xml(new 
GenericEntity<JAXBElement<XPartition>>(objFact.createXPartition(partition)){}),
-        APIResult.class);
+      .post(Entity.xml(new 
GenericEntity<JAXBElement<XPartition>>(objFact.createXPartition(partition)){})));
   }
 
   public APIResult addPartitionToDimensionTable(String dimTblName, String 
storage,
@@ -826,12 +834,11 @@ public class LensMetadataClient {
   public APIResult addPartitionsToDimensionTable(String dimTblName, String 
storage,
     XPartitionList partitions) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("dimtables").path(dimTblName)
+    return translate(target.path("dimtables").path(dimTblName)
       .path("storages").path(storage).path("partitions")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .post(Entity.xml(new 
GenericEntity<JAXBElement<XPartitionList>>(objFact.createXPartitionList(partitions)){}),
-        APIResult.class);
+      .post(Entity.xml(new 
GenericEntity<JAXBElement<XPartitionList>>(objFact.createXPartitionList(partitions)){})));
   }
 
   public APIResult addPartitionsToDimensionTable(String dimTblName, String 
storage,
@@ -846,12 +853,11 @@ public class LensMetadataClient {
   public APIResult addPartitionToFactTable(String fact, String storage,
     XPartition partition) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("facts").path(fact)
+    return translate(target.path("facts").path(fact)
       .path("storages").path(storage).path("partition")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .post(Entity.xml(new 
GenericEntity<JAXBElement<XPartition>>(objFact.createXPartition(partition)){}),
-        APIResult.class);
+      .post(Entity.xml(new 
GenericEntity<JAXBElement<XPartition>>(objFact.createXPartition(partition)){})));
   }
 
   public APIResult addPartitionToFactTable(String fact, String storage,
@@ -866,12 +872,11 @@ public class LensMetadataClient {
   public APIResult addPartitionsToFactTable(String fact, String storage,
     XPartitionList partitions) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("facts").path(fact)
+    return translate(target.path("facts").path(fact)
       .path("storages").path(storage).path("partitions")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .post(Entity.xml(new 
GenericEntity<JAXBElement<XPartitionList>>(objFact.createXPartitionList(partitions)){}),
-        APIResult.class);
+      .post(Entity.xml(new 
GenericEntity<JAXBElement<XPartitionList>>(objFact.createXPartitionList(partitions)){})));
   }
 
   public APIResult addPartitionsToFactTable(String fact, String storage,
@@ -886,12 +891,11 @@ public class LensMetadataClient {
   public APIResult updatePartitionOfDimensionTable(String dimTblName, String 
storage,
     XPartition partition) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("dimtables").path(dimTblName)
+    return translate(target.path("dimtables").path(dimTblName)
       .path("storages").path(storage).path("partition")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .put(Entity.xml(new 
GenericEntity<JAXBElement<XPartition>>(objFact.createXPartition(partition)){}),
-        APIResult.class);
+      .put(Entity.xml(new 
GenericEntity<JAXBElement<XPartition>>(objFact.createXPartition(partition)){})));
   }
 
   public APIResult updatePartitionOfDimensionTable(String dimTblName, String 
storage,
@@ -906,12 +910,11 @@ public class LensMetadataClient {
   public APIResult updatePartitionsOfDimensionTable(String dimTblName, String 
storage,
     XPartitionList partitions) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("dimtables").path(dimTblName)
+    return translate(target.path("dimtables").path(dimTblName)
       .path("storages").path(storage).path("partitions")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .put(Entity.xml(new 
GenericEntity<JAXBElement<XPartitionList>>(objFact.createXPartitionList(partitions)){}),
-        APIResult.class);
+      .put(Entity.xml(new 
GenericEntity<JAXBElement<XPartitionList>>(objFact.createXPartitionList(partitions)){})));
   }
 
   public APIResult updatePartitionsOfDimensionTable(String dimTblName, String 
storage,
@@ -926,12 +929,11 @@ public class LensMetadataClient {
   public APIResult updatePartitionOfFactTable(String fact, String storage,
     XPartition partition) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("facts").path(fact)
+    return translate(target.path("facts").path(fact)
       .path("storages").path(storage).path("partition")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .put(Entity.xml(new 
GenericEntity<JAXBElement<XPartition>>(objFact.createXPartition(partition)){}),
-        APIResult.class);
+      .put(Entity.xml(new 
GenericEntity<JAXBElement<XPartition>>(objFact.createXPartition(partition)){})));
   }
 
   public APIResult updatePartitionOfFactTable(String fact, String storage,
@@ -946,12 +948,11 @@ public class LensMetadataClient {
   public APIResult updatePartitionsOfFactTable(String fact, String storage,
     XPartitionList partitions) {
     WebTarget target = getMetastoreWebTarget();
-    return target.path("facts").path(fact)
+    return translate(target.path("facts").path(fact)
       .path("storages").path(storage).path("partitions")
       .queryParam("sessionid", this.connection.getSessionHandle())
       .request(MediaType.APPLICATION_XML)
-      .put(Entity.xml(new 
GenericEntity<JAXBElement<XPartitionList>>(objFact.createXPartitionList(partitions)){}),
-        APIResult.class);
+      .put(Entity.xml(new 
GenericEntity<JAXBElement<XPartitionList>>(objFact.createXPartitionList(partitions)){})));
   }
 
   public APIResult updatePartitionsOfFactTable(String fact, String storage,

http://git-wip-us.apache.org/repos/asf/lens/blob/8108ba06/lens-client/src/main/java/org/apache/lens/client/exceptions/LensBriefErrorException.java
----------------------------------------------------------------------
diff --git 
a/lens-client/src/main/java/org/apache/lens/client/exceptions/LensBriefErrorException.java
 
b/lens-client/src/main/java/org/apache/lens/client/exceptions/LensBriefErrorException.java
index ddfd777..1f5df91 100644
--- 
a/lens-client/src/main/java/org/apache/lens/client/exceptions/LensBriefErrorException.java
+++ 
b/lens-client/src/main/java/org/apache/lens/client/exceptions/LensBriefErrorException.java
@@ -31,4 +31,9 @@ public class LensBriefErrorException extends RuntimeException 
{
   public LensBriefErrorException(@NonNull final IdBriefErrorTemplate 
idBriefErrorTemplate) {
     this.idBriefErrorTemplate = idBriefErrorTemplate;
   }
+
+  @Override
+  public String toString() {
+    return idBriefErrorTemplate.toPrettyString();
+  }
 }

http://git-wip-us.apache.org/repos/asf/lens/blob/8108ba06/lens-client/src/main/java/org/apache/lens/client/model/IdBriefErrorTemplate.java
----------------------------------------------------------------------
diff --git 
a/lens-client/src/main/java/org/apache/lens/client/model/IdBriefErrorTemplate.java
 
b/lens-client/src/main/java/org/apache/lens/client/model/IdBriefErrorTemplate.java
index 8a485b5..c75bcf2 100644
--- 
a/lens-client/src/main/java/org/apache/lens/client/model/IdBriefErrorTemplate.java
+++ 
b/lens-client/src/main/java/org/apache/lens/client/model/IdBriefErrorTemplate.java
@@ -18,35 +18,29 @@
  */
 package org.apache.lens.client.model;
 
-import static com.google.common.base.Preconditions.checkArgument;
-
 import org.apache.lens.api.result.PrettyPrintable;
 
 import org.apache.commons.lang.StringUtils;
 
+import lombok.Data;
 import lombok.NonNull;
 
+@Data
 public class IdBriefErrorTemplate implements PrettyPrintable {
 
   private final IdBriefErrorTemplateKey idKey;
   private final String idValue;
+  @NonNull
   private final BriefError briefError;
 
-  public IdBriefErrorTemplate(@NonNull final IdBriefErrorTemplateKey idKey, 
final String idValue,
-      @NonNull BriefError briefError) {
-
-    checkArgument(StringUtils.isNotBlank(idValue));
-    this.idKey = idKey;
-    this.idValue = idValue;
-    this.briefError = briefError;
-  }
-
   @Override
   public String toPrettyString() {
 
-    StringBuilder sb = new StringBuilder(idKey.getConstant()).append(": 
").append(this.idValue).append("\n")
-        .append(this.briefError.toPrettyString());
-
+    StringBuilder sb = new StringBuilder();
+    if (idKey != null && StringUtils.isNotBlank(idValue)) {
+      sb.append(idKey.getConstant()).append(": 
").append(this.idValue).append("\n");
+    }
+    sb.append(this.briefError.toPrettyString());
     return sb.toString();
   }
 }

http://git-wip-us.apache.org/repos/asf/lens/blob/8108ba06/lens-client/src/test/java/org/apache/lens/client/model/IdBriefErrorTemplateTest.java
----------------------------------------------------------------------
diff --git 
a/lens-client/src/test/java/org/apache/lens/client/model/IdBriefErrorTemplateTest.java
 
b/lens-client/src/test/java/org/apache/lens/client/model/IdBriefErrorTemplateTest.java
index 9d9ec0e..3a2a31d 100644
--- 
a/lens-client/src/test/java/org/apache/lens/client/model/IdBriefErrorTemplateTest.java
+++ 
b/lens-client/src/test/java/org/apache/lens/client/model/IdBriefErrorTemplateTest.java
@@ -53,14 +53,14 @@ public class IdBriefErrorTemplateTest {
     return new Object[][] {{null}, {""}, {"  "}};
   }
 
-  @Test(expectedExceptions = NullPointerException.class)
+  @Test(expectedExceptions = NullPointerException.class, enabled = false)
   public void testIdBriefErrorTemplateMustNotAcceptNullIdKey() {
 
     final BriefError mockBriefError = mock(BriefError.class);
     new IdBriefErrorTemplate(null, "ValidIdValue", mockBriefError);
   }
 
-  @Test(dataProvider = "dpInvalidStrings", expectedExceptions = 
IllegalArgumentException.class)
+  @Test(dataProvider = "dpInvalidStrings", expectedExceptions = 
IllegalArgumentException.class, enabled = false)
   public void testIdBriefErrorTemplateMustNotAcceptInvalidIdValue(final String 
invalidIdValue) {
 
     final BriefError mockBriefError = mock(BriefError.class);

http://git-wip-us.apache.org/repos/asf/lens/blob/8108ba06/lens-examples/src/test/java/org/apache/lens/examples/ExampleSchemaToStringTest.java
----------------------------------------------------------------------
diff --git 
a/lens-examples/src/test/java/org/apache/lens/examples/ExampleSchemaToStringTest.java
 
b/lens-examples/src/test/java/org/apache/lens/examples/ExampleSchemaToStringTest.java
index 4a3c07b..3a86090 100644
--- 
a/lens-examples/src/test/java/org/apache/lens/examples/ExampleSchemaToStringTest.java
+++ 
b/lens-examples/src/test/java/org/apache/lens/examples/ExampleSchemaToStringTest.java
@@ -37,8 +37,12 @@ public class ExampleSchemaToStringTest extends 
YAMLToStringStrategyTest {
   public List<ToStringTestData> provideData() throws URISyntaxException, 
JAXBException, IOException {
     List<ToStringTestData> ret = Lists.newArrayList();
     for (String yamlName : new 
File(getClass().getResource("/yaml").toURI()).list()) {
-      ret.add(new ToStringTestData(yamlName, 
unmarshallFromFile(yamlName.replaceAll("yaml$", "xml")),
-        readYAML("/yaml/" + yamlName)));
+      try {
+        ret.add(new ToStringTestData(yamlName, 
unmarshallFromFile(yamlName.replaceAll("yaml$", "xml")),
+          readYAML("/yaml/" + yamlName)));
+      } catch (Throwable th) {
+        ret.add(new ToStringTestData(yamlName, th));
+      }
     }
     return ret;
   }

Reply via email to