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; }