Repository: sqoop Updated Branches: refs/heads/sqoop2 67214a48c -> 63002273d
SQOOP-2774: Sqoop2: Remove the notion of RolesBean (Jarek Jarcec Cecho via Colin Ma) Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/63002273 Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/63002273 Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/63002273 Branch: refs/heads/sqoop2 Commit: 63002273d07dcb7e599d699d341e9a28dd5f10a5 Parents: 67214a4 Author: Colin Ma <[email protected]> Authored: Fri Jan 15 11:25:41 2016 +0800 Committer: Colin Ma <[email protected]> Committed: Fri Jan 15 11:25:41 2016 +0800 ---------------------------------------------------------------------- .../request/AuthorizationResourceRequest.java | 10 ++-- .../client/request/SqoopResourceRequests.java | 4 +- .../java/org/apache/sqoop/json/RoleBean.java | 26 ++++---- .../java/org/apache/sqoop/json/RolesBean.java | 63 -------------------- .../org/apache/sqoop/json/TestRoleBean.java | 57 ++++++++++++++++++ .../handler/AuthorizationRequestHandler.java | 6 +- 6 files changed, 80 insertions(+), 86 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/sqoop/blob/63002273/client/src/main/java/org/apache/sqoop/client/request/AuthorizationResourceRequest.java ---------------------------------------------------------------------- diff --git a/client/src/main/java/org/apache/sqoop/client/request/AuthorizationResourceRequest.java b/client/src/main/java/org/apache/sqoop/client/request/AuthorizationResourceRequest.java index e99e913..f696724 100644 --- a/client/src/main/java/org/apache/sqoop/client/request/AuthorizationResourceRequest.java +++ b/client/src/main/java/org/apache/sqoop/client/request/AuthorizationResourceRequest.java @@ -52,10 +52,10 @@ public class AuthorizationResourceRequest extends ResourceRequest { super(token); } - public RolesBean readRoles(String serverUrl) { + public RoleBean readRoles(String serverUrl) { String response = super.get(serverUrl + RESOURCE + ROLES); JSONObject jsonObject = JSONUtils.parse(response); - RolesBean bean = new RolesBean(); + RoleBean bean = new RoleBean(); bean.restore(jsonObject); return bean; } @@ -72,7 +72,7 @@ public class AuthorizationResourceRequest extends ResourceRequest { } public void grantRevokeRole(String serverUrl, List<MRole> roles, List<MPrincipal> principals, boolean isGrant) { - RolesBean rolesBean = new RolesBean(roles); + RoleBean rolesBean = new RoleBean(roles); PrincipalBean principalsBean = new PrincipalBean(principals); // Extract all config inputs including sensitive inputs JSONObject jsonObject = new JSONObject(); @@ -85,12 +85,12 @@ public class AuthorizationResourceRequest extends ResourceRequest { } } - public RolesBean readRolesByPrincipal(String serverUrl, MPrincipal principal) { + public RoleBean readRolesByPrincipal(String serverUrl, MPrincipal principal) { String response = super.get(serverUrl + RESOURCE + ROLES + "?principal_name=" + UrlSafeUtils.urlEncode(principal.getName()) + "&principal_type=" + UrlSafeUtils.urlEncode(principal.getType())); JSONObject jsonObject = JSONUtils.parse(response); - RolesBean bean = new RolesBean(); + RoleBean bean = new RoleBean(); bean.restore(jsonObject); return bean; } http://git-wip-us.apache.org/repos/asf/sqoop/blob/63002273/client/src/main/java/org/apache/sqoop/client/request/SqoopResourceRequests.java ---------------------------------------------------------------------- diff --git a/client/src/main/java/org/apache/sqoop/client/request/SqoopResourceRequests.java b/client/src/main/java/org/apache/sqoop/client/request/SqoopResourceRequests.java index c962842..bb5242f 100644 --- a/client/src/main/java/org/apache/sqoop/client/request/SqoopResourceRequests.java +++ b/client/src/main/java/org/apache/sqoop/client/request/SqoopResourceRequests.java @@ -178,7 +178,7 @@ public class SqoopResourceRequests { return getSubmissionResourceRequest().read(serverUrl, jArg); } - public RolesBean readRoles() { + public RoleBean readRoles() { return getAuthorizationRequest().readRoles(serverUrl); } @@ -198,7 +198,7 @@ public class SqoopResourceRequests { getAuthorizationRequest().grantRevokeRole(serverUrl, roles, principals, false); } - public RolesBean readRolesByPrincipal(MPrincipal principal) { + public RoleBean readRolesByPrincipal(MPrincipal principal) { return getAuthorizationRequest().readRolesByPrincipal(serverUrl, principal); } http://git-wip-us.apache.org/repos/asf/sqoop/blob/63002273/common/src/main/java/org/apache/sqoop/json/RoleBean.java ---------------------------------------------------------------------- diff --git a/common/src/main/java/org/apache/sqoop/json/RoleBean.java b/common/src/main/java/org/apache/sqoop/json/RoleBean.java index ffafddb..3a034c7 100644 --- a/common/src/main/java/org/apache/sqoop/json/RoleBean.java +++ b/common/src/main/java/org/apache/sqoop/json/RoleBean.java @@ -33,7 +33,7 @@ import java.util.List; @InterfaceStability.Unstable public class RoleBean implements JsonBean { - public static final String ROLE = "role"; + private static final String ROLES = "roles"; private static final String NAME = "name"; private List<MRole> roles; @@ -45,7 +45,7 @@ public class RoleBean implements JsonBean { // For "extract" public RoleBean(MRole role) { this(); - this.roles = new ArrayList<MRole>(); + this.roles = new ArrayList<>(); this.roles.add(role); } @@ -61,9 +61,16 @@ public class RoleBean implements JsonBean { @Override @SuppressWarnings("unchecked") public JSONObject extract(boolean skipSensitive) { - JSONObject role = new JSONObject(); - role.put(ROLE, extractRole(roles.get(0))); - return role; + JSONArray rolesArray = extractRoles(); + JSONObject roles = new JSONObject(); + roles.put(ROLES, rolesArray); + return roles; + } + + @Override + public void restore(JSONObject json) { + JSONArray rolesArray = JSONUtils.getJSONArray(json, ROLES); + restoreRoles(rolesArray); } @SuppressWarnings("unchecked") @@ -84,15 +91,8 @@ public class RoleBean implements JsonBean { return object; } - @Override - public void restore(JSONObject json) { - roles = new ArrayList<MRole>(); - JSONObject obj = JSONUtils.getJSONObject(json, ROLE); - roles.add(restoreRole(obj)); - } - protected void restoreRoles(JSONArray array) { - roles = new ArrayList<MRole>(); + roles = new ArrayList<>(); for (Object obj : array) { roles.add(restoreRole(obj)); } http://git-wip-us.apache.org/repos/asf/sqoop/blob/63002273/common/src/main/java/org/apache/sqoop/json/RolesBean.java ---------------------------------------------------------------------- diff --git a/common/src/main/java/org/apache/sqoop/json/RolesBean.java b/common/src/main/java/org/apache/sqoop/json/RolesBean.java deleted file mode 100644 index c09ba95..0000000 --- a/common/src/main/java/org/apache/sqoop/json/RolesBean.java +++ /dev/null @@ -1,63 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.sqoop.json; - -import org.apache.sqoop.classification.InterfaceAudience; -import org.apache.sqoop.classification.InterfaceStability; -import org.apache.sqoop.model.MRole; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import java.util.List; - [email protected] [email protected] -public class RolesBean extends RoleBean { - - private static final String ROLES = "roles"; - - // For "extract" - public RolesBean(MRole role) { - super(role); - } - - public RolesBean(List<MRole> roles) { - super(roles); - - } - - // For "restore" - public RolesBean() { - } - - @Override - @SuppressWarnings("unchecked") - public JSONObject extract(boolean skipSensitive) { - JSONArray rolesArray = super.extractRoles(); - JSONObject roles = new JSONObject(); - roles.put(ROLES, rolesArray); - return roles; - } - - @Override - public void restore(JSONObject json) { - JSONArray rolesArray = JSONUtils.getJSONArray(json, ROLES); - restoreRoles(rolesArray); - } - -} http://git-wip-us.apache.org/repos/asf/sqoop/blob/63002273/common/src/test/java/org/apache/sqoop/json/TestRoleBean.java ---------------------------------------------------------------------- diff --git a/common/src/test/java/org/apache/sqoop/json/TestRoleBean.java b/common/src/test/java/org/apache/sqoop/json/TestRoleBean.java new file mode 100644 index 0000000..1974113 --- /dev/null +++ b/common/src/test/java/org/apache/sqoop/json/TestRoleBean.java @@ -0,0 +1,57 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.sqoop.json; + +import org.apache.sqoop.model.MRole; +import org.json.simple.JSONObject; +import org.testng.annotations.Test; + +import java.util.LinkedList; +import java.util.List; + +import static org.testng.AssertJUnit.assertEquals; + +public class TestRoleBean { + + @Test + public void testLinkSerialization() { + MRole godRole = new MRole("god"); + MRole janitorRole = new MRole("janitor"); + List<MRole> roles = new LinkedList<>(); + roles.add(godRole); + roles.add(janitorRole); + + // Serialize it to JSON object + RoleBean outputBean = new RoleBean(roles); + JSONObject json = outputBean.extract(false); + + // "Move" it across network in text form + String jsonString = json.toJSONString(); + + // Retrieved transferred object + JSONObject parsedJson = JSONUtils.parse(jsonString); + RoleBean inputBean = new RoleBean(roles); + inputBean.restore(parsedJson); + + assertEquals(inputBean.getRoles().size(), 2); + assertEquals(inputBean.getRoles().get(0).getName(), "god"); + assertEquals(inputBean.getRoles().get(1).getName(), "janitor"); + + } + +} http://git-wip-us.apache.org/repos/asf/sqoop/blob/63002273/server/src/main/java/org/apache/sqoop/handler/AuthorizationRequestHandler.java ---------------------------------------------------------------------- diff --git a/server/src/main/java/org/apache/sqoop/handler/AuthorizationRequestHandler.java b/server/src/main/java/org/apache/sqoop/handler/AuthorizationRequestHandler.java index 45bf4d0..6cd77e9 100644 --- a/server/src/main/java/org/apache/sqoop/handler/AuthorizationRequestHandler.java +++ b/server/src/main/java/org/apache/sqoop/handler/AuthorizationRequestHandler.java @@ -145,12 +145,12 @@ public class AuthorizationRequestHandler implements RequestHandler { MPrincipal principal = new MPrincipal(principal_name, principal_type); manager.logAuditEvent(ctx.getUserName(), ctx.getRequest().getRemoteAddr(), "get", "roles by principal", principal.toString()); - return new RolesBean(handler.getRolesByPrincipal(principal)); + return new RoleBean(handler.getRolesByPrincipal(principal)); } else { // get all roles in the system manager.logAuditEvent(ctx.getUserName(), ctx.getRequest().getRemoteAddr(), "get", "roles", "all"); - return new RolesBean(handler.getAllRoles()); + return new RoleBean(handler.getAllRoles()); } } @@ -258,7 +258,7 @@ public class AuthorizationRequestHandler implements RequestHandler { AuthorizationHandler handler = AuthorizationManager.getInstance().getAuthorizationHandler(); AuditLoggerManager manager = AuditLoggerManager.getInstance(); - RolesBean rolesBean = new RolesBean(); + RoleBean rolesBean = new RoleBean(); PrincipalBean principalsBean = new PrincipalBean(); try {
