You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by ja...@apache.org on 2015/09/09 15:42:29 UTC

sqoop git commit: SQOOP-2537: Sqoop2: Use object name instead of object id for the name filed in MResource

Repository: sqoop
Updated Branches:
  refs/heads/sqoop2 547a5b435 -> 66989a6ec


SQOOP-2537: Sqoop2: Use object name instead of object id for the name filed in MResource

(Dian Fu via Jarek Jarcec Cecho)


Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/66989a6e
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/66989a6e
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/66989a6e

Branch: refs/heads/sqoop2
Commit: 66989a6ec5176b17cf96fd582fa26382b773628f
Parents: 547a5b4
Author: Jarek Jarcec Cecho <ja...@apache.org>
Authored: Wed Sep 9 15:41:57 2015 +0200
Committer: Jarek Jarcec Cecho <ja...@apache.org>
Committed: Wed Sep 9 15:41:57 2015 +0200

----------------------------------------------------------------------
 .../authorization/AuthorizationEngine.java      | 98 +++++++++++---------
 .../sqoop/handler/ConnectorRequestHandler.java  |  2 +-
 .../apache/sqoop/handler/JobRequestHandler.java | 35 ++++---
 .../sqoop/handler/LinkRequestHandler.java       | 18 ++--
 .../sqoop/handler/SubmissionRequestHandler.java | 12 ++-
 5 files changed, 93 insertions(+), 72 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sqoop/blob/66989a6e/security/src/main/java/org/apache/sqoop/security/authorization/AuthorizationEngine.java
----------------------------------------------------------------------
diff --git a/security/src/main/java/org/apache/sqoop/security/authorization/AuthorizationEngine.java b/security/src/main/java/org/apache/sqoop/security/authorization/AuthorizationEngine.java
index bebbe91..e7b7dac 100644
--- a/security/src/main/java/org/apache/sqoop/security/authorization/AuthorizationEngine.java
+++ b/security/src/main/java/org/apache/sqoop/security/authorization/AuthorizationEngine.java
@@ -20,10 +20,6 @@ package org.apache.sqoop.security.authorization;
 import com.beust.jcommander.internal.Lists;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Collections2;
-import org.apache.commons.lang.StringUtils;
-import org.apache.hadoop.security.UserGroupInformation;
-import org.apache.hadoop.security.token.delegation.web.HttpUserGroupInformation;
-import org.apache.log4j.Logger;
 import org.apache.sqoop.common.SqoopException;
 import org.apache.sqoop.model.*;
 import org.apache.sqoop.repository.Repository;
@@ -37,7 +33,20 @@ import java.util.List;
 
 public class AuthorizationEngine {
 
-  private static final Logger LOG = Logger.getLogger(AuthorizationEngine.class);
+  private static String getResourceName(MResource.TYPE resourceType, long resourceId) {
+    Repository repository = RepositoryManager.getInstance().getRepository();
+
+    switch (resourceType) {
+    case CONNECTOR:
+      return repository.findConnector(resourceId).getUniqueName();
+    case LINK:
+      return repository.findLink(resourceId).getName();
+    case JOB:
+      return repository.findJob(resourceId).getName();
+    }
+
+    return null;
+  }
 
   /**
    * Filter resources, get all valid resources from all resources
@@ -47,7 +56,7 @@ public class AuthorizationEngine {
       @Override
       public boolean apply(T input) {
         try {
-          String name = String.valueOf(input.getPersistenceId());
+          String name = getResourceName(type, input.getPersistenceId());
           checkPrivilege(doUserName, getPrivilege(type, name, MPrivilege.ACTION.READ));
           // add valid resource
           return true;
@@ -63,74 +72,73 @@ public class AuthorizationEngine {
   /**
    * Connector related function
    */
-  public static void readConnector(String doUserName, String connectorId) throws SqoopException {
-    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.CONNECTOR, connectorId, MPrivilege.ACTION.READ));
+  public static void readConnector(String doUserName, String connectorName) throws SqoopException {
+    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.CONNECTOR, connectorName, MPrivilege.ACTION.READ));
   }
 
   /**
    * Link related function
    */
-  public static void readLink(String doUserName, String linkId) throws SqoopException {
-    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.LINK, linkId, MPrivilege.ACTION.READ));
+  public static void readLink(String doUserName, String linkName) throws SqoopException {
+    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.LINK, linkName, MPrivilege.ACTION.READ));
   }
 
-  public static void createLink(String doUserName, String connectorId) throws SqoopException {
-    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.CONNECTOR, connectorId, MPrivilege.ACTION.READ));
+  public static void createLink(String doUserName, String connectorName) throws SqoopException {
+    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.CONNECTOR, connectorName, MPrivilege.ACTION.READ));
   }
 
-  public static void updateLink(String doUserName, String connectorId, String linkId) throws SqoopException {
-    MPrivilege privilege1 = getPrivilege(MResource.TYPE.CONNECTOR, connectorId, MPrivilege.ACTION.READ);
-    MPrivilege privilege2 = getPrivilege(MResource.TYPE.LINK, linkId, MPrivilege.ACTION.WRITE);
+  public static void updateLink(String doUserName, String connectorName, String linkName) throws SqoopException {
+    MPrivilege privilege1 = getPrivilege(MResource.TYPE.CONNECTOR, connectorName, MPrivilege.ACTION.READ);
+    MPrivilege privilege2 = getPrivilege(MResource.TYPE.LINK, linkName, MPrivilege.ACTION.WRITE);
     checkPrivilege(doUserName, privilege1, privilege2);
   }
 
-  public static void deleteLink(String doUserName, String linkId) throws SqoopException {
-    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.LINK, linkId, MPrivilege.ACTION.WRITE));
+  public static void deleteLink(String doUserName, String linkName) throws SqoopException {
+    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.LINK, linkName, MPrivilege.ACTION.WRITE));
   }
 
-  public static void enableDisableLink(String doUserName, String linkId) throws SqoopException {
-    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.LINK, linkId, MPrivilege.ACTION.WRITE));
+  public static void enableDisableLink(String doUserName, String linkName) throws SqoopException {
+    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.LINK, linkName, MPrivilege.ACTION.WRITE));
   }
 
   /**
    * Job related function
    */
-  public static void readJob(String doUserName, String jobId) throws SqoopException {
-    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.JOB, jobId, MPrivilege.ACTION.READ));
+  public static void readJob(String doUserName, String jobName) throws SqoopException {
+    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.JOB, jobName, MPrivilege.ACTION.READ));
   }
 
-  public static void createJob(String doUserName, String linkId1, String linkId2) throws SqoopException {
-    MPrivilege privilege1 = getPrivilege(MResource.TYPE.LINK, linkId1, MPrivilege.ACTION.READ);
-    MPrivilege privilege2 = getPrivilege(MResource.TYPE.LINK, linkId2, MPrivilege.ACTION.READ);
+  public static void createJob(String doUserName, String linkName1, String linkName2) throws SqoopException {
+    MPrivilege privilege1 = getPrivilege(MResource.TYPE.LINK, linkName1, MPrivilege.ACTION.READ);
+    MPrivilege privilege2 = getPrivilege(MResource.TYPE.LINK, linkName2, MPrivilege.ACTION.READ);
     checkPrivilege(doUserName, privilege1, privilege2);
   }
 
-  public static void updateJob(String doUserName, String linkId1, String linkId2, String jobId) throws SqoopException {
-    MPrivilege privilege1 = getPrivilege(MResource.TYPE.LINK, linkId1, MPrivilege.ACTION.READ);
-    MPrivilege privilege2 = getPrivilege(MResource.TYPE.LINK, linkId2, MPrivilege.ACTION.READ);
-    MPrivilege privilege3 = getPrivilege(MResource.TYPE.JOB, jobId, MPrivilege.ACTION.WRITE);
+  public static void updateJob(String doUserName, String linkName1, String linkName2, String jobName) throws SqoopException {
+    MPrivilege privilege1 = getPrivilege(MResource.TYPE.LINK, linkName1, MPrivilege.ACTION.READ);
+    MPrivilege privilege2 = getPrivilege(MResource.TYPE.LINK, linkName2, MPrivilege.ACTION.READ);
+    MPrivilege privilege3 = getPrivilege(MResource.TYPE.JOB, jobName, MPrivilege.ACTION.WRITE);
     checkPrivilege(doUserName, privilege1, privilege2, privilege3);
   }
 
-  public static void deleteJob(String doUserName, String jobId) throws SqoopException {
-    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.JOB, jobId, MPrivilege.ACTION.WRITE));
+  public static void deleteJob(String doUserName, String jobName) throws SqoopException {
+    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.JOB, jobName, MPrivilege.ACTION.WRITE));
   }
 
-  public static void enableDisableJob(String doUserName, String jobId) throws SqoopException {
-    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.JOB, jobId, MPrivilege.ACTION.WRITE));
+  public static void enableDisableJob(String doUserName, String jobName) throws SqoopException {
+    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.JOB, jobName, MPrivilege.ACTION.WRITE));
   }
 
-  public static void startJob(String doUserName, String jobId) throws SqoopException {
-    ;
-    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.JOB, jobId, MPrivilege.ACTION.WRITE));
+  public static void startJob(String doUserName, String jobName) throws SqoopException {
+    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.JOB, jobName, MPrivilege.ACTION.WRITE));
   }
 
-  public static void stopJob(String doUserName, String jobId) throws SqoopException {
-    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.JOB, jobId, MPrivilege.ACTION.WRITE));
+  public static void stopJob(String doUserName, String jobName) throws SqoopException {
+    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.JOB, jobName, MPrivilege.ACTION.WRITE));
   }
 
-  public static void statusJob(String doUserName, String jobId) throws SqoopException {
-    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.JOB, jobId, MPrivilege.ACTION.READ));
+  public static void statusJob(String doUserName, String jobName) throws SqoopException {
+    checkPrivilege(doUserName, getPrivilege(MResource.TYPE.JOB, jobName, MPrivilege.ACTION.READ));
   }
 
   /**
@@ -141,8 +149,8 @@ public class AuthorizationEngine {
       @Override
       public boolean apply(MSubmission input) {
         try {
-          String jobId = String.valueOf(input.getJobId());
-          checkPrivilege(doUserName, getPrivilege(MResource.TYPE.JOB, jobId, MPrivilege.ACTION.READ));
+          String jobName = getResourceName(MResource.TYPE.JOB, input.getJobId());
+          checkPrivilege(doUserName, getPrivilege(MResource.TYPE.JOB, jobName, MPrivilege.ACTION.READ));
           // add valid submission
           return true;
         } catch (RuntimeException e) {
@@ -158,9 +166,9 @@ public class AuthorizationEngine {
    * Help function
    */
   private static MPrivilege getPrivilege(MResource.TYPE resourceType,
-                                         String resourceId,
+                                         String resourceName,
                                          MPrivilege.ACTION privilegeAction) {
-    return new MPrivilege(new MResource(resourceId, resourceType), privilegeAction, false);
+    return new MPrivilege(new MResource(resourceName, resourceType), privilegeAction, false);
   }
 
   private static void checkPrivilege(String doUserName, MPrivilege... privileges) {
@@ -176,12 +184,12 @@ public class AuthorizationEngine {
     for (MPrivilege privilege : privileges) {
       Repository repository = RepositoryManager.getInstance().getRepository();
       if (MResource.TYPE.LINK.name().equalsIgnoreCase(privilege.getResource().getType())) {
-        MLink link = repository.findLink(Long.parseLong(privilege.getResource().getName()));
+        MLink link = repository.findLink(privilege.getResource().getName());
         if (!doUserName.equals(link.getCreationUser())) {
           privilegesNeedCheck.add(privilege);
         }
       } else if (MResource.TYPE.JOB.name().equalsIgnoreCase(privilege.getResource().getType())) {
-        MJob job = repository.findJob(Long.parseLong(privilege.getResource().getName()));
+        MJob job = repository.findJob(privilege.getResource().getName());
         if (!doUserName.equals(job.getCreationUser())) {
           privilegesNeedCheck.add(privilege);
         }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/66989a6e/server/src/main/java/org/apache/sqoop/handler/ConnectorRequestHandler.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/sqoop/handler/ConnectorRequestHandler.java b/server/src/main/java/org/apache/sqoop/handler/ConnectorRequestHandler.java
index 23f6c63..60b124c 100644
--- a/server/src/main/java/org/apache/sqoop/handler/ConnectorRequestHandler.java
+++ b/server/src/main/java/org/apache/sqoop/handler/ConnectorRequestHandler.java
@@ -90,7 +90,7 @@ public class ConnectorRequestHandler implements RequestHandler {
           ctx.getRequest().getRemoteAddr(), "get", "connector", String.valueOf(cIdentifier));
 
       // Authorization check
-      AuthorizationEngine.readConnector(ctx.getUserName(), String.valueOf(connector.getPersistenceId()));
+      AuthorizationEngine.readConnector(ctx.getUserName(), connector.getUniqueName());
 
       return new ConnectorBean(Arrays.asList(connector), configParamBundles);
     }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/66989a6e/server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java b/server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java
index 13ebb35..cb9485f 100644
--- a/server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java
+++ b/server/src/main/java/org/apache/sqoop/handler/JobRequestHandler.java
@@ -140,14 +140,15 @@ public class JobRequestHandler implements RequestHandler {
 
     String jobIdentifier = ctx.getLastURLElement();
     long jobId = HandlerUtils.getJobIdFromIdentifier(jobIdentifier);
+    String jobName = HandlerUtils.getJobNameFromIdentifier(jobIdentifier);
 
     // Authorization check
-    AuthorizationEngine.deleteJob(ctx.getUserName(), String.valueOf(jobId));
+    AuthorizationEngine.deleteJob(ctx.getUserName(), jobName);
 
     AuditLoggerManager.getInstance().logAuditEvent(ctx.getUserName(),
         ctx.getRequest().getRemoteAddr(), "delete", "job", jobIdentifier);
     repository.deleteJob(jobId);
-    MResource resource = new MResource(String.valueOf(jobId), MResource.TYPE.JOB);
+    MResource resource = new MResource(jobName, MResource.TYPE.JOB);
     AuthorizationManager.getInstance().getAuthorizationHandler().removeResource(resource);
     return JsonBean.EMPTY_BEAN;
   }
@@ -186,12 +187,14 @@ public class JobRequestHandler implements RequestHandler {
 
     // Authorization check
     if (create) {
-      AuthorizationEngine.createJob(ctx.getUserName(), String.valueOf(postedJob.getFromLinkId()),
-              String.valueOf(postedJob.getToLinkId()));
+      AuthorizationEngine.createJob(ctx.getUserName(),
+          HandlerUtils.getLinkNameFromIdentifier(String.valueOf(postedJob.getFromLinkId())),
+          HandlerUtils.getLinkNameFromIdentifier(String.valueOf(postedJob.getToLinkId())));
     } else {
-      AuthorizationEngine.updateJob(ctx.getUserName(), String.valueOf(postedJob.getFromLinkId()),
-              String.valueOf(postedJob.getToLinkId()),
-              String.valueOf(postedJob.getPersistenceId()));
+      AuthorizationEngine.updateJob(ctx.getUserName(),
+          HandlerUtils.getLinkNameFromIdentifier(String.valueOf(postedJob.getFromLinkId())),
+          HandlerUtils.getLinkNameFromIdentifier(String.valueOf(postedJob.getToLinkId())),
+          HandlerUtils.getJobNameFromIdentifier(String.valueOf(postedJob.getPersistenceId())));
     }
 
     // Verify that user is not trying to spoof us
@@ -306,12 +309,12 @@ public class JobRequestHandler implements RequestHandler {
       AuditLoggerManager.getInstance().logAuditEvent(ctx.getUserName(),
           ctx.getRequest().getRemoteAddr(), "get", "job", connectorIdentifier);
 
-      long jobId = HandlerUtils.getJobIdFromIdentifier(connectorIdentifier);
-      MJob job = repository.findJob(jobId);
+      String jobName = HandlerUtils.getJobNameFromIdentifier(connectorIdentifier);
 
       // Authorization check
-      AuthorizationEngine.readJob(ctx.getUserName(), String.valueOf(job.getPersistenceId()));
+      AuthorizationEngine.readJob(ctx.getUserName(), jobName);
 
+      MJob job = repository.findJob(jobName);
       jobBean = createJobBean(Arrays.asList(job), locale);
     }
     return jobBean;
@@ -351,9 +354,10 @@ public class JobRequestHandler implements RequestHandler {
     String[] elements = ctx.getUrlElements();
     String jobIdentifier = elements[elements.length - 2];
     long jobId = HandlerUtils.getJobIdFromIdentifier(jobIdentifier);
+    String jobName = HandlerUtils.getJobNameFromIdentifier(jobIdentifier);
 
     // Authorization check
-    AuthorizationEngine.enableDisableJob(ctx.getUserName(), String.valueOf(jobId));
+    AuthorizationEngine.enableDisableJob(ctx.getUserName(), jobName);
 
     repository.enableJob(jobId, enabled);
     return JsonBean.EMPTY_BEAN;
@@ -363,9 +367,10 @@ public class JobRequestHandler implements RequestHandler {
     String[] elements = ctx.getUrlElements();
     String jobIdentifier = elements[elements.length - 2];
     long jobId = HandlerUtils.getJobIdFromIdentifier(jobIdentifier);
+    String jobName = HandlerUtils.getJobNameFromIdentifier(jobIdentifier);
 
     // Authorization check
-    AuthorizationEngine.startJob(ctx.getUserName(), String.valueOf(jobId));
+    AuthorizationEngine.startJob(ctx.getUserName(), jobName);
 
     AuditLoggerManager.getInstance().logAuditEvent(ctx.getUserName(),
         ctx.getRequest().getRemoteAddr(), "submit", "job", String.valueOf(jobId));
@@ -388,9 +393,10 @@ public class JobRequestHandler implements RequestHandler {
     String[] elements = ctx.getUrlElements();
     String jobIdentifier = elements[elements.length - 2];
     long jobId = HandlerUtils.getJobIdFromIdentifier(jobIdentifier);
+    String jobName = HandlerUtils.getJobNameFromIdentifier(jobIdentifier);
 
     // Authorization check
-    AuthorizationEngine.stopJob(ctx.getUserName(), String.valueOf(jobId));
+    AuthorizationEngine.stopJob(ctx.getUserName(), jobName);
 
     AuditLoggerManager.getInstance().logAuditEvent(ctx.getUserName(),
         ctx.getRequest().getRemoteAddr(), "stop", "job", String.valueOf(jobId));
@@ -402,9 +408,10 @@ public class JobRequestHandler implements RequestHandler {
     String[] elements = ctx.getUrlElements();
     String jobIdentifier = elements[elements.length - 2];
     long jobId = HandlerUtils.getJobIdFromIdentifier(jobIdentifier);
+    String jobName = HandlerUtils.getJobNameFromIdentifier(jobIdentifier);
 
     // Authorization check
-    AuthorizationEngine.statusJob(ctx.getUserName(), String.valueOf(jobId));
+    AuthorizationEngine.statusJob(ctx.getUserName(), jobName);
 
     AuditLoggerManager.getInstance().logAuditEvent(ctx.getUserName(),
         ctx.getRequest().getRemoteAddr(), "status", "job", String.valueOf(jobId));

http://git-wip-us.apache.org/repos/asf/sqoop/blob/66989a6e/server/src/main/java/org/apache/sqoop/handler/LinkRequestHandler.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/sqoop/handler/LinkRequestHandler.java b/server/src/main/java/org/apache/sqoop/handler/LinkRequestHandler.java
index aa7e5ff..3041646 100644
--- a/server/src/main/java/org/apache/sqoop/handler/LinkRequestHandler.java
+++ b/server/src/main/java/org/apache/sqoop/handler/LinkRequestHandler.java
@@ -94,15 +94,16 @@ public class LinkRequestHandler implements RequestHandler {
     String linkIdentifier = ctx.getLastURLElement();
     // support linkName or linkId for the api
     long linkId = HandlerUtils.getLinkIdFromIdentifier(linkIdentifier);
+    String linkName = HandlerUtils.getLinkNameFromIdentifier(linkIdentifier);
 
     // Authorization check
-    AuthorizationEngine.deleteLink(ctx.getUserName(), String.valueOf(linkId));
+    AuthorizationEngine.deleteLink(ctx.getUserName(), linkName);
 
     AuditLoggerManager.getInstance().logAuditEvent(ctx.getUserName(),
         ctx.getRequest().getRemoteAddr(), "delete", "link", linkIdentifier);
 
     repository.deleteLink(linkId);
-    MResource resource = new MResource(String.valueOf(linkId), MResource.TYPE.LINK);
+    MResource resource = new MResource(linkName, MResource.TYPE.LINK);
     AuthorizationManager.getInstance().getAuthorizationHandler().removeResource(resource);
     return JsonBean.EMPTY_BEAN;
   }
@@ -138,10 +139,12 @@ public class LinkRequestHandler implements RequestHandler {
 
     // Authorization check
     if (create) {
-      AuthorizationEngine.createLink(ctx.getUserName(), String.valueOf(postedLink.getConnectorId()));
+      AuthorizationEngine.createLink(ctx.getUserName(),
+          HandlerUtils.getConnectorNameFromIdentifier(String.valueOf(postedLink.getConnectorId())));
     } else {
-      AuthorizationEngine.updateLink(ctx.getUserName(), String.valueOf(postedLink.getConnectorId()),
-              String.valueOf(postedLink.getPersistenceId()));
+      AuthorizationEngine.updateLink(ctx.getUserName(),
+          HandlerUtils.getConnectorNameFromIdentifier(String.valueOf(postedLink.getConnectorId())),
+          HandlerUtils.getLinkNameFromIdentifier(String.valueOf(postedLink.getPersistenceId())));
     }
 
     MLinkConfig linkConfig = ConnectorManager.getInstance()
@@ -238,7 +241,7 @@ public class LinkRequestHandler implements RequestHandler {
       MLink link = repository.findLink(linkId);
 
       // Authorization check
-      AuthorizationEngine.readLink(ctx.getUserName(), String.valueOf(link.getPersistenceId()));
+      AuthorizationEngine.readLink(ctx.getUserName(), link.getName());
 
       linkBean = createLinkBean(Arrays.asList(link), locale);
     }
@@ -273,9 +276,10 @@ public class LinkRequestHandler implements RequestHandler {
     String[] elements = ctx.getUrlElements();
     String linkIdentifier = elements[elements.length - 2];
     long linkId = HandlerUtils.getLinkIdFromIdentifier(linkIdentifier);
+    String linkName = HandlerUtils.getLinkNameFromIdentifier(linkIdentifier);
 
     // Authorization check
-    AuthorizationEngine.enableDisableLink(ctx.getUserName(), String.valueOf(linkId));
+    AuthorizationEngine.enableDisableLink(ctx.getUserName(), linkName);
 
     repository.enableLink(linkId, enabled);
     return JsonBean.EMPTY_BEAN;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/66989a6e/server/src/main/java/org/apache/sqoop/handler/SubmissionRequestHandler.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/sqoop/handler/SubmissionRequestHandler.java b/server/src/main/java/org/apache/sqoop/handler/SubmissionRequestHandler.java
index f2a6758..4b99239 100644
--- a/server/src/main/java/org/apache/sqoop/handler/SubmissionRequestHandler.java
+++ b/server/src/main/java/org/apache/sqoop/handler/SubmissionRequestHandler.java
@@ -55,8 +55,7 @@ public class SubmissionRequestHandler implements RequestHandler {
       String jobIdentifier = ctx.getParameterValue(JOB_NAME_QUERY_PARAM);
       AuditLoggerManager.getInstance().logAuditEvent(ctx.getUserName(),
           ctx.getRequest().getRemoteAddr(), "get", "submissionsByJob", jobIdentifier);
-        long jobId = HandlerUtils.getJobIdFromIdentifier(jobIdentifier);
-        return getSubmissionsForJob(jobId, ctx);
+        return getSubmissionsForJob(jobIdentifier, ctx);
     } else {
       // all submissions in the system
       AuditLoggerManager.getInstance().logAuditEvent(ctx.getUserName(),
@@ -75,12 +74,15 @@ public class SubmissionRequestHandler implements RequestHandler {
     return new SubmissionsBean(submissions);
   }
 
-  private JsonBean getSubmissionsForJob(long jid, RequestContext ctx) {
+  private JsonBean getSubmissionsForJob(String jobIdentifier, RequestContext ctx) {
+    long jobId = HandlerUtils.getJobIdFromIdentifier(jobIdentifier);
+    String jobName = HandlerUtils.getJobNameFromIdentifier(jobIdentifier);
+
     //Authorization check
-    AuthorizationEngine.statusJob(ctx.getUserName(), String.valueOf(jid));
+    AuthorizationEngine.statusJob(ctx.getUserName(), jobName);
 
     List<MSubmission> submissions = RepositoryManager.getInstance().getRepository()
-        .findSubmissionsForJob(jid);
+        .findSubmissionsForJob(jobId);
 
     return new SubmissionsBean(submissions);
   }