Repository: falcon Updated Branches: refs/heads/master 9946758ea -> 3f1e04792
FALCON-2224 Change return type of extension APIs to APIResult Author: Pracheer Agarwal <[email protected]> Reviewers: @sandeepSamudrala, @pallavi-rao Closes #330 from PracheerAgarwal/APIResult and squashes the following commits: 2f62d03 [Pracheer Agarwal] resolved merge conficts 1c0d6fb [Pracheer Agarwal] resolved merge conficts 8e058e7 [Pracheer Agarwal] removed unused imports ff1dbb4 [Pracheer Agarwal] FALCON-2224 added getExtensionDetail and getExtensions to AbstractFalconClient 533d507 [Pracheer Agarwal] FALCON-2224, Change return type of extension APIs to APIResult 46042fd [Pracheer Agarwal] Merge branch 'master' of https://github.com/PracheerAgarwal/falcon daa3ffc [Pracheer Agarwal] FALCON-2225 extension owner added for trusted extensions 622cae4 [Pracheer Agarwal] FALCON-2225 extension owner added for trusted extensions Project: http://git-wip-us.apache.org/repos/asf/falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/falcon/commit/3f1e0479 Tree: http://git-wip-us.apache.org/repos/asf/falcon/tree/3f1e0479 Diff: http://git-wip-us.apache.org/repos/asf/falcon/diff/3f1e0479 Branch: refs/heads/master Commit: 3f1e0479213d74a71ed69d8877fc6a479e34b1e1 Parents: 9946758 Author: Pracheer Agarwal <[email protected]> Authored: Tue Dec 27 14:13:29 2016 +0530 Committer: Pallavi Rao <[email protected]> Committed: Tue Dec 27 14:13:29 2016 +0530 ---------------------------------------------------------------------- .../apache/falcon/cli/FalconExtensionCLI.java | 14 +-- .../falcon/client/AbstractFalconClient.java | 19 +++- .../org/apache/falcon/client/FalconClient.java | 28 ++--- .../resource/AbstractExtensionManager.java | 79 +++++++++++++-- .../resource/proxy/ExtensionManagerProxy.java | 101 +++---------------- .../apache/falcon/unit/FalconUnitClient.java | 16 ++- .../falcon/unit/LocalExtensionManager.java | 14 ++- .../apache/falcon/unit/FalconUnitTestBase.java | 6 +- 8 files changed, 152 insertions(+), 125 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/falcon/blob/3f1e0479/cli/src/main/java/org/apache/falcon/cli/FalconExtensionCLI.java ---------------------------------------------------------------------- diff --git a/cli/src/main/java/org/apache/falcon/cli/FalconExtensionCLI.java b/cli/src/main/java/org/apache/falcon/cli/FalconExtensionCLI.java index c8c66bf..59538bc 100644 --- a/cli/src/main/java/org/apache/falcon/cli/FalconExtensionCLI.java +++ b/cli/src/main/java/org/apache/falcon/cli/FalconExtensionCLI.java @@ -77,26 +77,26 @@ public class FalconExtensionCLI { String description = commandLine.getOptionValue(FalconCLIConstants.DESCRIPTION); if (optionsList.contains(ENUMERATE_OPT)) { - result = client.enumerateExtensions(); + result = client.enumerateExtensions().getMessage(); result = prettyPrintJson(result); } else if (optionsList.contains(DEFINITION_OPT)) { validateRequiredParameter(extensionName, EXTENSION_NAME_OPT); - result = client.getExtensionDefinition(extensionName); + result = client.getExtensionDefinition(extensionName).getMessage(); result = prettyPrintJson(result); } else if (optionsList.contains(DESCRIBE_OPT)) { validateRequiredParameter(extensionName, EXTENSION_NAME_OPT); - result = client.getExtensionDescription(extensionName); + result = client.getExtensionDescription(extensionName).getMessage(); } else if (optionsList.contains(UNREGISTER_OPT)) { validateRequiredParameter(extensionName, EXTENSION_NAME_OPT); - result = client.unregisterExtension(extensionName); + result = client.unregisterExtension(extensionName).getMessage(); } else if (optionsList.contains(DETAIL_OPT)) { if (optionsList.contains(JOB_NAME_OPT)) { validateRequiredParameter(jobName, JOB_NAME_OPT); - result = client.getExtensionJobDetails(jobName); + result = client.getExtensionJobDetails(jobName).getMessage(); result = prettyPrintJson(result); } else { validateRequiredParameter(extensionName, EXTENSION_NAME_OPT); - result = client.getExtensionDetail(extensionName); + result = client.getExtensionDetail(extensionName).getMessage(); result = prettyPrintJson(result); } } else if (optionsList.contains(FalconCLIConstants.SUBMIT_OPT)) { @@ -107,7 +107,7 @@ public class FalconExtensionCLI { } else if (optionsList.contains(REGISTER_OPT)) { validateRequiredParameter(extensionName, EXTENSION_NAME_OPT); validateRequiredParameter(path, PATH); - result = client.registerExtension(extensionName, path, description); + result = client.registerExtension(extensionName, path, description).getMessage(); } else if (optionsList.contains(FalconCLIConstants.SUBMIT_AND_SCHEDULE_OPT)) { validateRequiredParameter(extensionName, EXTENSION_NAME_OPT); validateRequiredParameter(filePath, FalconCLIConstants.FILE_PATH_OPT); http://git-wip-us.apache.org/repos/asf/falcon/blob/3f1e0479/client/src/main/java/org/apache/falcon/client/AbstractFalconClient.java ---------------------------------------------------------------------- diff --git a/client/src/main/java/org/apache/falcon/client/AbstractFalconClient.java b/client/src/main/java/org/apache/falcon/client/AbstractFalconClient.java index 3dabf52..879d794 100644 --- a/client/src/main/java/org/apache/falcon/client/AbstractFalconClient.java +++ b/client/src/main/java/org/apache/falcon/client/AbstractFalconClient.java @@ -187,14 +187,14 @@ public abstract class AbstractFalconClient { * @param description description of the extension. * @return Result of the registerExtension command. */ - public abstract String registerExtension(String extensionName, String packagePath, String description); + public abstract APIResult registerExtension(String extensionName, String packagePath, String description); /** * * @param extensionName extensionName that needs to be unregistered * @return Result of the unregisterExtension operation */ - public abstract String unregisterExtension(String extensionName); + public abstract APIResult unregisterExtension(String extensionName); /** * Prepares set of entities the extension has implemented and stage them to a local directory and submit them too. @@ -226,7 +226,20 @@ public abstract class AbstractFalconClient { * @param jobName job name of the extension job. * @return */ - public abstract String getExtensionJobDetails(final String jobName); + public abstract APIResult getExtensionJobDetails(final String jobName); + + /** + * Returns details of an extension. + * @param extensionName name of the extension. + * @return + */ + public abstract APIResult getExtensionDetail(final String extensionName); + + /** + * Returns all registered extensions. + * @return + */ + public abstract APIResult enumerateExtensions(); /** * http://git-wip-us.apache.org/repos/asf/falcon/blob/3f1e0479/client/src/main/java/org/apache/falcon/client/FalconClient.java ---------------------------------------------------------------------- diff --git a/client/src/main/java/org/apache/falcon/client/FalconClient.java b/client/src/main/java/org/apache/falcon/client/FalconClient.java index d5b8342..fbb4db3 100644 --- a/client/src/main/java/org/apache/falcon/client/FalconClient.java +++ b/client/src/main/java/org/apache/falcon/client/FalconClient.java @@ -1009,28 +1009,28 @@ public class FalconClient extends AbstractFalconClient { return sendMetadataLineageRequest(MetadataOperations.EDGES, id, doAsUser); } - public String enumerateExtensions() { + public APIResult enumerateExtensions() { ClientResponse clientResponse = new ResourceBuilder() .path(ExtensionOperations.ENUMERATE.path) .call(ExtensionOperations.ENUMERATE); - return getResponse(String.class, clientResponse); + return getResponse(APIResult.class, clientResponse); } - public String unregisterExtension(final String extensionName) { + public APIResult unregisterExtension(final String extensionName) { ClientResponse clientResponse = new ResourceBuilder() .path(ExtensionOperations.UNREGISTER.path, extensionName) .call(ExtensionOperations.UNREGISTER); - return getResponse(String.class, clientResponse); + return getResponse(APIResult.class, clientResponse); } - public String getExtensionDetail(final String extensionName) { - return getResponse(String.class, getExtensionDetailResponse(extensionName)); + public APIResult getExtensionDetail(final String extensionName) { + return getResponse(APIResult.class, getExtensionDetailResponse(extensionName)); } - public String getExtensionJobDetails(final String jobName) { + public APIResult getExtensionJobDetails(final String jobName) { ClientResponse clientResponse = new ResourceBuilder().path(ExtensionOperations.JOB_DETAILS.path, jobName) .call(ExtensionOperations.JOB_DETAILS); - return getResponse(String.class, clientResponse); + return getResponse(APIResult.class, clientResponse); } private ClientResponse getExtensionDetailResponse(final String extensionName) { @@ -1038,26 +1038,26 @@ public class FalconClient extends AbstractFalconClient { .call(ExtensionOperations.DETAIL); } - public String registerExtension(final String extensionName, final String packagePath, final String description) { + public APIResult registerExtension(final String extensionName, final String packagePath, final String description) { ClientResponse clientResponse = new ResourceBuilder() .path(ExtensionOperations.REGISTER.path, extensionName).addQueryParam(PATH, packagePath) .addQueryParam(FalconCLIConstants.DESCRIPTION, description) .call(ExtensionOperations.REGISTER); - return getResponse(String.class, clientResponse); + return getResponse(APIResult.class, clientResponse); } - public String getExtensionDefinition(final String extensionName) { + public APIResult getExtensionDefinition(final String extensionName) { ClientResponse clientResponse = new ResourceBuilder() .path(ExtensionOperations.DEFINITION.path, extensionName) .call(ExtensionOperations.DEFINITION); - return getResponse(String.class, clientResponse); + return getResponse(APIResult.class, clientResponse); } - public String getExtensionDescription(final String extensionName) { + public APIResult getExtensionDescription(final String extensionName) { ClientResponse clientResponse = new ResourceBuilder() .path(ExtensionOperations.DESCRIBE.path, extensionName) .call(ExtensionOperations.DESCRIBE); - return getResponse(String.class, clientResponse); + return getResponse(APIResult.class, clientResponse); } @Override http://git-wip-us.apache.org/repos/asf/falcon/blob/3f1e0479/prism/src/main/java/org/apache/falcon/resource/AbstractExtensionManager.java ---------------------------------------------------------------------- diff --git a/prism/src/main/java/org/apache/falcon/resource/AbstractExtensionManager.java b/prism/src/main/java/org/apache/falcon/resource/AbstractExtensionManager.java index a50b535..d360370 100644 --- a/prism/src/main/java/org/apache/falcon/resource/AbstractExtensionManager.java +++ b/prism/src/main/java/org/apache/falcon/resource/AbstractExtensionManager.java @@ -23,14 +23,17 @@ import org.apache.falcon.FalconWebException; import org.apache.falcon.entity.parser.ValidationException; import org.apache.falcon.extensions.jdbc.ExtensionMetaStore; import org.apache.falcon.extensions.store.ExtensionStore; +import org.apache.falcon.persistence.ExtensionBean; import org.apache.falcon.persistence.ExtensionJobsBean; import org.apache.falcon.security.CurrentUser; +import org.codehaus.jettison.json.JSONArray; import org.codehaus.jettison.json.JSONException; import org.codehaus.jettison.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.ws.rs.core.Response; +import java.util.List; /** * A base class for managing Extension Operations. @@ -47,6 +50,11 @@ public class AbstractExtensionManager extends AbstractSchedulableEntityManager { private static final String CREATION_TIME = "creationTime"; private static final String LAST_UPDATE_TIME = "lastUpdatedTime"; + private static final String NAME = "name"; + private static final String EXTENSION_TYPE = "type"; + private static final String EXTENSION_DESC = "description"; + private static final String EXTENSION_LOCATION = "location"; + public static void validateExtensionName(final String extensionName) { if (StringUtils.isBlank(extensionName)) { throw FalconWebException.newAPIException("Extension name is mandatory and shouldn't be blank", @@ -54,27 +62,45 @@ public class AbstractExtensionManager extends AbstractSchedulableEntityManager { } } - public String registerExtensionMetadata(String extensionName, String path, String description, String owner) { + public APIResult registerExtensionMetadata(String extensionName, String path, String description, String owner) { validateExtensionName(extensionName); try { - return ExtensionStore.get().registerExtension(extensionName, path, description, owner); + return new APIResult(APIResult.Status.SUCCEEDED, ExtensionStore.get().registerExtension(extensionName, path, + description, owner)); } catch (Throwable e) { throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR); } } - public String getExtensionJobDetail(String jobName) { + public APIResult getExtensionJobDetail(String jobName) { + try { + return new APIResult(APIResult.Status.SUCCEEDED, buildExtensionJobDetailResult(jobName).toString()); + } catch (FalconException e) { + throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR); + } + } + + public APIResult getExtensionDetail(String extensionName) { try { - return buildExtensionJobDetailResult(jobName).toString(); + return new APIResult(APIResult.Status.SUCCEEDED, buildExtensionDetailResult(extensionName).toString()); } catch (FalconException e) { throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR); } } - public String deleteExtensionMetadata(String extensionName){ + public APIResult getExtensions() { + try { + return new APIResult(APIResult.Status.SUCCEEDED, buildEnumerateResult().toString()); + } catch (FalconException e) { + throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR); + } + } + + public APIResult deleteExtensionMetadata(String extensionName){ validateExtensionName(extensionName); try { - return ExtensionStore.get().deleteExtension(extensionName, CurrentUser.getUser()); + return new APIResult(APIResult.Status.SUCCEEDED, ExtensionStore.get().deleteExtension(extensionName, + CurrentUser.getUser())); } catch (Throwable e) { throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR); } @@ -114,4 +140,45 @@ public class AbstractExtensionManager extends AbstractSchedulableEntityManager { } return tags.substring(nameStart, nameEnd); } + + private JSONObject buildExtensionDetailResult(final String extensionName) throws FalconException { + ExtensionMetaStore metaStore = ExtensionStore.getMetaStore(); + + if (!metaStore.checkIfExtensionExists(extensionName)){ + throw new ValidationException("No extension resources found for " + extensionName); + } + + ExtensionBean bean = metaStore.getDetail(extensionName); + JSONObject resultObject = new JSONObject(); + try { + resultObject.put(NAME, bean.getExtensionName()); + resultObject.put(EXTENSION_TYPE, bean.getExtensionType()); + resultObject.put(EXTENSION_DESC, bean.getDescription()); + resultObject.put(EXTENSION_LOCATION, bean.getLocation()); + } catch (JSONException e) { + LOG.error("Exception in buildDetailResults:", e); + throw new FalconException(e); + } + return resultObject; + } + + private static JSONArray buildEnumerateResult() throws FalconException { + JSONArray results = new JSONArray(); + ExtensionMetaStore metaStore = ExtensionStore.getMetaStore(); + List<ExtensionBean> extensionBeanList = metaStore.getAllExtensions(); + for (ExtensionBean extensionBean : extensionBeanList) { + JSONObject resultObject = new JSONObject(); + + try { + resultObject.put(NAME, extensionBean.getExtensionName().toLowerCase()); + resultObject.put(EXTENSION_TYPE, extensionBean.getExtensionType()); + resultObject.put(EXTENSION_DESC, extensionBean.getDescription()); + resultObject.put(EXTENSION_LOCATION, extensionBean.getLocation()); + } catch (JSONException e) { + throw new FalconException(e); + } + results.put(resultObject); + } + return results; + } } http://git-wip-us.apache.org/repos/asf/falcon/blob/3f1e0479/prism/src/main/java/org/apache/falcon/resource/proxy/ExtensionManagerProxy.java ---------------------------------------------------------------------- diff --git a/prism/src/main/java/org/apache/falcon/resource/proxy/ExtensionManagerProxy.java b/prism/src/main/java/org/apache/falcon/resource/proxy/ExtensionManagerProxy.java index 9ddebe8..ebe989d 100644 --- a/prism/src/main/java/org/apache/falcon/resource/proxy/ExtensionManagerProxy.java +++ b/prism/src/main/java/org/apache/falcon/resource/proxy/ExtensionManagerProxy.java @@ -25,8 +25,6 @@ import org.apache.falcon.FalconException; import org.apache.falcon.FalconWebException; import org.apache.falcon.entity.EntityUtil; import org.apache.falcon.entity.parser.ProcessEntityParser; -import org.apache.falcon.entity.parser.ValidationException; -import org.apache.falcon.entity.store.StoreAccessException; import org.apache.falcon.entity.v0.Entity; import org.apache.falcon.entity.v0.EntityType; import org.apache.falcon.entity.v0.feed.Feed; @@ -49,9 +47,6 @@ import org.apache.falcon.resource.channel.ChannelFactory; import org.apache.falcon.security.CurrentUser; import org.apache.falcon.service.Services; import org.apache.falcon.util.DeploymentUtil; -import org.codehaus.jettison.json.JSONArray; -import org.codehaus.jettison.json.JSONException; -import org.codehaus.jettison.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -95,24 +90,15 @@ public class ExtensionManagerProxy extends AbstractExtensionManager { private static final String TAG_PREFIX_EXTENSION_NAME = "_falcon_extension_name="; private static final String ASCENDING_SORT_ORDER = "asc"; private static final String DESCENDING_SORT_ORDER = "desc"; - private Extension extension = new Extension(); - - private static final String EXTENSION_RESULTS = "extensions"; - private static final String TOTAL_RESULTS = "totalResults"; private static final String README = "README"; - private static final String NAME = "name"; - private static final String EXTENSION_TYPE = "type"; - private static final String EXTENSION_DESC = "description"; - private static final String EXTENSION_LOCATION = "location"; + private boolean embeddedMode = DeploymentUtil.isEmbeddedMode(); private String currentColo = DeploymentUtil.getCurrentColo(); private final Map<String, Channel> configSyncChannels = new HashMap<String, Channel>(); - private static final String PRISM_TAG = "prism"; private final Map<String, Channel> entityManagerChannels = new HashMap<String, Channel>(); - private static final String EXTENSION_PROPERTY_JSON_SUFFIX = "-properties.json"; //SUSPEND CHECKSTYLE CHECK ParameterNumberCheck @GET @@ -596,26 +582,11 @@ public class ExtensionManagerProxy extends AbstractExtensionManager { @GET @Path("enumerate") @Produces({MediaType.APPLICATION_JSON}) - public Response getExtensions() { + public APIResult getExtensions() { checkIfExtensionServiceIsEnabled(); - JSONArray results; - try { - results = buildEnumerateResult(); - } catch (StoreAccessException e) { - LOG.error("Failed when accessing extension store.", e); - throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR); - } catch (FalconException e) { - throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR); - } - - try { - JSONObject response = new JSONObject(); - response.put(EXTENSION_RESULTS, results); - response.put(TOTAL_RESULTS, results.length()); - - return Response.ok(response).build(); - } catch (Throwable e) { + return new APIResult(APIResult.Status.SUCCEEDED, super.getExtensions().toString()); + } catch (FalconWebException e) { throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR); } } @@ -623,12 +594,12 @@ public class ExtensionManagerProxy extends AbstractExtensionManager { @GET @Path("describe/{extension-name}") @Produces(MediaType.TEXT_PLAIN) - public String getExtensionDescription( + public APIResult getExtensionDescription( @PathParam("extension-name") String extensionName) { checkIfExtensionServiceIsEnabled(); validateExtensionName(extensionName); try { - return ExtensionStore.get().getResource(extensionName, README); + return new APIResult(APIResult.Status.SUCCEEDED, ExtensionStore.get().getResource(extensionName, README)); } catch (Throwable e) { throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR); } @@ -637,11 +608,11 @@ public class ExtensionManagerProxy extends AbstractExtensionManager { @GET @Path("detail/{extension-name}") @Produces({MediaType.APPLICATION_JSON}) - public Response getDetail(@PathParam("extension-name") String extensionName) { + public APIResult getDetail(@PathParam("extension-name") String extensionName) { checkIfExtensionServiceIsEnabled(); validateExtensionName(extensionName); try { - return Response.ok(buildExtensionDetailResult(extensionName)).build(); + return super.getExtensionDetail(extensionName); } catch (Throwable e) { throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR); } @@ -650,10 +621,10 @@ public class ExtensionManagerProxy extends AbstractExtensionManager { @GET @Path("extensionJobDetails/{job-name}") @Produces({MediaType.APPLICATION_JSON}) - public String getExtensionJobDetail(@PathParam("job-name") String jobName) { + public APIResult getExtensionJobDetail(@PathParam("job-name") String jobName) { checkIfExtensionServiceIsEnabled(); try { - return super.getExtensionJobDetail(jobName); + return super.getExtensionJobDetail(jobName); } catch (Throwable e) { throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR); } @@ -663,7 +634,7 @@ public class ExtensionManagerProxy extends AbstractExtensionManager { @Path("unregister/{extension-name}") @Consumes({MediaType.TEXT_XML, MediaType.TEXT_PLAIN}) @Produces(MediaType.TEXT_PLAIN) - public String deleteExtensionMetadata( + public APIResult deleteExtensionMetadata( @PathParam("extension-name") String extensionName){ checkIfExtensionServiceIsEnabled(); try { @@ -677,7 +648,7 @@ public class ExtensionManagerProxy extends AbstractExtensionManager { @Path("register/{extension-name}") @Consumes({MediaType.TEXT_XML, MediaType.TEXT_PLAIN}) @Produces(MediaType.TEXT_PLAIN) - public String registerExtensionMetadata( + public APIResult registerExtensionMetadata( @PathParam("extension-name") String extensionName, @QueryParam("path") String path, @QueryParam("description") String description) { @@ -692,38 +663,17 @@ public class ExtensionManagerProxy extends AbstractExtensionManager { @GET @Path("definition/{extension-name}") @Produces({MediaType.APPLICATION_JSON}) - public String getExtensionDefinition( + public APIResult getExtensionDefinition( @PathParam("extension-name") String extensionName) { checkIfExtensionServiceIsEnabled(); try { - return ExtensionStore.get().getResource(extensionName, - extensionName.toLowerCase() + EXTENSION_PROPERTY_JSON_SUFFIX); + return new APIResult(APIResult.Status.SUCCEEDED, ExtensionStore.get().getResource(extensionName, + extensionName.toLowerCase() + EXTENSION_PROPERTY_JSON_SUFFIX)); } catch (Throwable e) { throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR); } } - private static JSONArray buildEnumerateResult() throws FalconException { - JSONArray results = new JSONArray(); - ExtensionMetaStore metaStore = ExtensionStore.getMetaStore(); - List<ExtensionBean> extensionBeanList = metaStore.getAllExtensions(); - for (ExtensionBean extensionBean : extensionBeanList) { - JSONObject resultObject = new JSONObject(); - - try { - resultObject.put(NAME, extensionBean.getExtensionName().toLowerCase()); - resultObject.put(EXTENSION_TYPE, extensionBean.getExtensionType()); - resultObject.put(EXTENSION_DESC, extensionBean.getDescription()); - resultObject.put(EXTENSION_LOCATION, extensionBean.getLocation()); - } catch (JSONException e) { - throw new FalconException(e); - } - results.put(resultObject); - - } - return results; - } - private List<Entity> generateEntities(String extensionName, InputStream configStream) throws FalconException, IOException { // get entities for extension job @@ -738,27 +688,6 @@ public class ExtensionManagerProxy extends AbstractExtensionManager { return entities; } - private JSONObject buildExtensionDetailResult(final String extensionName) throws FalconException { - ExtensionMetaStore metaStore = ExtensionStore.getMetaStore(); - - if (!metaStore.checkIfExtensionExists(extensionName)){ - throw new ValidationException("No extension resources found for " + extensionName); - } - - ExtensionBean bean = metaStore.getDetail(extensionName); - JSONObject resultObject = new JSONObject(); - try { - resultObject.put(NAME, bean.getExtensionName()); - resultObject.put(EXTENSION_TYPE, bean.getExtensionType()); - resultObject.put(EXTENSION_DESC, bean.getDescription()); - resultObject.put(EXTENSION_LOCATION, bean.getLocation()); - } catch (JSONException e) { - LOG.error("Exception in buildDetailResults:", e); - throw new FalconException(e); - } - return resultObject; - } - private Map<String, List<Entity>> groupEntitiesByJob(List<Entity> entities) { Map<String, List<Entity>> groupedEntities = new HashMap<>(); for (Entity entity : entities) { http://git-wip-us.apache.org/repos/asf/falcon/blob/3f1e0479/unit/src/main/java/org/apache/falcon/unit/FalconUnitClient.java ---------------------------------------------------------------------- diff --git a/unit/src/main/java/org/apache/falcon/unit/FalconUnitClient.java b/unit/src/main/java/org/apache/falcon/unit/FalconUnitClient.java index 7036dc7..3a3c5b2 100644 --- a/unit/src/main/java/org/apache/falcon/unit/FalconUnitClient.java +++ b/unit/src/main/java/org/apache/falcon/unit/FalconUnitClient.java @@ -272,12 +272,12 @@ public class FalconUnitClient extends AbstractFalconClient { } @Override - public String registerExtension(String extensionName, String packagePath, String description) { + public APIResult registerExtension(String extensionName, String packagePath, String description) { return localExtensionManager.registerExtensionMetadata(extensionName, packagePath, description); } @Override - public String unregisterExtension(String extensionName) { + public APIResult unregisterExtension(String extensionName) { return localExtensionManager.unRegisterExtension(extensionName); } @@ -336,11 +336,21 @@ public class FalconUnitClient extends AbstractFalconClient { } @Override - public String getExtensionJobDetails(final String jobName) { + public APIResult getExtensionJobDetails(final String jobName) { return localExtensionManager.getExtensionJobDetails(jobName); } @Override + public APIResult getExtensionDetail(String extensionName) { + return localExtensionManager.getExtensionDetails(extensionName); + } + + @Override + public APIResult enumerateExtensions() { + return localExtensionManager.getExtensions(); + } + + @Override public EntityList getEntityList(String entityType, String fields, String nameSubsequence, String tagKeywords, String filterBy, String filterTags, String orderBy, String sortOrder, Integer offset, Integer numResults, String doAsUser) { http://git-wip-us.apache.org/repos/asf/falcon/blob/3f1e0479/unit/src/main/java/org/apache/falcon/unit/LocalExtensionManager.java ---------------------------------------------------------------------- diff --git a/unit/src/main/java/org/apache/falcon/unit/LocalExtensionManager.java b/unit/src/main/java/org/apache/falcon/unit/LocalExtensionManager.java index 57c339e..4cf3ae4 100644 --- a/unit/src/main/java/org/apache/falcon/unit/LocalExtensionManager.java +++ b/unit/src/main/java/org/apache/falcon/unit/LocalExtensionManager.java @@ -87,16 +87,24 @@ public class LocalExtensionManager extends AbstractExtensionManager { } - public String registerExtensionMetadata(String extensionName, String packagePath , String description) { + public APIResult registerExtensionMetadata(String extensionName, String packagePath , String description) { return super.registerExtensionMetadata(extensionName, packagePath, description, CurrentUser.getUser()); } - public String unRegisterExtension(String extensionName) { + public APIResult unRegisterExtension(String extensionName) { return super.deleteExtensionMetadata(extensionName); } - public String getExtensionJobDetails(String jobName){ + public APIResult getExtensionJobDetails(String jobName){ return super.getExtensionJobDetail(jobName); } + public APIResult getExtensionDetails(String extensionName){ + return super.getExtensionJobDetail(extensionName); + } + + public APIResult getExtensions(){ + return super.getExtensions(); + } + } http://git-wip-us.apache.org/repos/asf/falcon/blob/3f1e0479/unit/src/test/java/org/apache/falcon/unit/FalconUnitTestBase.java ---------------------------------------------------------------------- diff --git a/unit/src/test/java/org/apache/falcon/unit/FalconUnitTestBase.java b/unit/src/test/java/org/apache/falcon/unit/FalconUnitTestBase.java index 6f71747..0771b9d 100644 --- a/unit/src/test/java/org/apache/falcon/unit/FalconUnitTestBase.java +++ b/unit/src/test/java/org/apache/falcon/unit/FalconUnitTestBase.java @@ -221,15 +221,15 @@ public class FalconUnitTestBase { public String registerExtension(String extensionName, String packagePath, String description) throws IOException, FalconException { - return falconUnitClient.registerExtension(extensionName, packagePath, description); + return falconUnitClient.registerExtension(extensionName, packagePath, description).getMessage(); } public String getExtensionJobDetails(String jobName) { - return falconUnitClient.getExtensionJobDetails(jobName); + return falconUnitClient.getExtensionJobDetails(jobName).getMessage(); } public String unregisterExtension(String extensionName) { - return falconUnitClient.unregisterExtension(extensionName); + return falconUnitClient.unregisterExtension(extensionName).getMessage(); } public APIResult submitExtensionJob(String extensionName, String jobName, String configPath, String doAsUser) {
