mirror of
https://github.com/apache/sqoop.git
synced 2025-05-06 06:12:26 +08:00
SQOOP-2772: Sqoop2: Remove the notion of PrincipalsBean
(Jarek Jarcec Cecho via Colin Ma)
This commit is contained in:
parent
2df3db3e78
commit
88654b95fa
@ -73,7 +73,7 @@ public void dropRole(String serverUrl, MRole role) {
|
||||
|
||||
public void grantRevokeRole(String serverUrl, List<MRole> roles, List<MPrincipal> principals, boolean isGrant) {
|
||||
RolesBean rolesBean = new RolesBean(roles);
|
||||
PrincipalsBean principalsBean = new PrincipalsBean(principals);
|
||||
PrincipalBean principalsBean = new PrincipalBean(principals);
|
||||
// Extract all config inputs including sensitive inputs
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.putAll(rolesBean.extract(false));
|
||||
@ -95,17 +95,17 @@ public RolesBean readRolesByPrincipal(String serverUrl, MPrincipal principal) {
|
||||
return bean;
|
||||
}
|
||||
|
||||
public PrincipalsBean readPrincipalsByRole(String serverUrl, MRole role) {
|
||||
public PrincipalBean readPrincipalsByRole(String serverUrl, MRole role) {
|
||||
String response = super.get(serverUrl + RESOURCE + PRINCIPALS
|
||||
+ "?role_name=" + UrlSafeUtils.urlEncode(role.getName()));
|
||||
JSONObject jsonObject = JSONUtils.parse(response);
|
||||
PrincipalsBean bean = new PrincipalsBean();
|
||||
PrincipalBean bean = new PrincipalBean();
|
||||
bean.restore(jsonObject);
|
||||
return bean;
|
||||
}
|
||||
|
||||
public void grantRevokePrivilege(String serverUrl, List<MPrincipal> principals, List<MPrivilege> privileges, boolean isGrant) {
|
||||
PrincipalsBean principalsBean = new PrincipalsBean(principals);
|
||||
PrincipalBean principalsBean = new PrincipalBean(principals);
|
||||
// Extract all config inputs including sensitive inputs
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.putAll(principalsBean.extract(false));
|
||||
|
@ -202,7 +202,7 @@ public RolesBean readRolesByPrincipal(MPrincipal principal) {
|
||||
return getAuthorizationRequest().readRolesByPrincipal(serverUrl, principal);
|
||||
}
|
||||
|
||||
public PrincipalsBean readPrincipalsByRole(MRole role) {
|
||||
public PrincipalBean readPrincipalsByRole(MRole role) {
|
||||
return getAuthorizationRequest().readPrincipalsByRole(serverUrl, role);
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,7 @@
|
||||
@InterfaceStability.Unstable
|
||||
public class PrincipalBean implements JsonBean {
|
||||
|
||||
public static final String PRINCIPAL = "principal";
|
||||
private static final String PRINCIPALS = "principals";
|
||||
private static final String NAME = "name";
|
||||
private static final String TYPE = "type";
|
||||
|
||||
@ -46,7 +46,7 @@ public List<MPrincipal> getPrincipals() {
|
||||
// For "extract"
|
||||
public PrincipalBean(MPrincipal principal) {
|
||||
this();
|
||||
this.principals = new ArrayList<MPrincipal>();
|
||||
this.principals = new ArrayList<>();
|
||||
this.principals.add(principal);
|
||||
}
|
||||
|
||||
@ -62,9 +62,16 @@ public PrincipalBean() {
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public JSONObject extract(boolean skipSensitive) {
|
||||
JSONObject principal = new JSONObject();
|
||||
principal.put(PRINCIPAL, extractPrincipal(principals.get(0)));
|
||||
return principal;
|
||||
JSONArray principalsArray = extractPrincipals();
|
||||
JSONObject principals = new JSONObject();
|
||||
principals.put(PRINCIPALS, principalsArray);
|
||||
return principals;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void restore(JSONObject json) {
|
||||
JSONArray principalsArray = JSONUtils.getJSONArray(json, PRINCIPALS);
|
||||
restorePrincipals(principalsArray);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@ -86,15 +93,8 @@ private JSONObject extractPrincipal(MPrincipal principal) {
|
||||
return object;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void restore(JSONObject json) {
|
||||
principals = new ArrayList<MPrincipal>();
|
||||
JSONObject obj = JSONUtils.getJSONObject(json, PRINCIPAL);
|
||||
principals.add(restorePrincipal(obj));
|
||||
}
|
||||
|
||||
protected void restorePrincipals(JSONArray array) {
|
||||
principals = new ArrayList<MPrincipal>();
|
||||
principals = new ArrayList<>();
|
||||
for (Object obj : array) {
|
||||
principals.add(restorePrincipal(obj));
|
||||
}
|
||||
|
@ -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.MPrincipal;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@InterfaceAudience.Private
|
||||
@InterfaceStability.Unstable
|
||||
public class PrincipalsBean extends PrincipalBean {
|
||||
|
||||
private static final String PRINCIPALS = "principals";
|
||||
|
||||
// For "extract"
|
||||
public PrincipalsBean(MPrincipal principal) {
|
||||
super(principal);
|
||||
}
|
||||
|
||||
public PrincipalsBean(List<MPrincipal> principals) {
|
||||
super(principals);
|
||||
|
||||
}
|
||||
|
||||
// For "restore"
|
||||
public PrincipalsBean() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public JSONObject extract(boolean skipSensitive) {
|
||||
JSONArray principalsArray = super.extractPrincipals();
|
||||
JSONObject principals = new JSONObject();
|
||||
principals.put(PRINCIPALS, principalsArray);
|
||||
return principals;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void restore(JSONObject json) {
|
||||
JSONArray principalsArray = JSONUtils.getJSONArray(json, PRINCIPALS);
|
||||
restorePrincipals(principalsArray);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
/**
|
||||
* 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.MPrincipal;
|
||||
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 TestPrincipalBean {
|
||||
|
||||
@Test
|
||||
public void testSerialization() {
|
||||
MPrincipal principalUser = new MPrincipal("jarcec", MPrincipal.TYPE.USER);
|
||||
MPrincipal principalGroup = new MPrincipal("sqoop", MPrincipal.TYPE.GROUP);
|
||||
List<MPrincipal> principals = new LinkedList<>();
|
||||
principals.add(principalUser);
|
||||
principals.add(principalGroup);
|
||||
|
||||
// Serialize it to JSON object
|
||||
PrincipalBean outputBean = new PrincipalBean(principals);
|
||||
JSONObject json = outputBean.extract(false);
|
||||
|
||||
// "Move" it across network in text form
|
||||
String jsonString = json.toJSONString();
|
||||
|
||||
// Retrieved transferred object
|
||||
JSONObject parsedJson = JSONUtils.parse(jsonString);
|
||||
PrincipalBean inputBean = new PrincipalBean();
|
||||
inputBean.restore(parsedJson);
|
||||
|
||||
assertEquals(inputBean.getPrincipals().size(), 2);
|
||||
|
||||
assertEquals(inputBean.getPrincipals().get(0).getName(), "jarcec");
|
||||
assertEquals(inputBean.getPrincipals().get(0).getType(), "USER");
|
||||
|
||||
assertEquals(inputBean.getPrincipals().get(1).getName(), "sqoop");
|
||||
assertEquals(inputBean.getPrincipals().get(1).getType(), "GROUP");
|
||||
}
|
||||
|
||||
}
|
@ -164,7 +164,7 @@ private JsonBean getPrincipal(RequestContext ctx) {
|
||||
MRole role = new MRole(role_name);
|
||||
manager.logAuditEvent(ctx.getUserName(),
|
||||
ctx.getRequest().getRemoteAddr(), "get", "principals by role", role.toString());
|
||||
return new PrincipalsBean(handler.getPrincipalsByRole(role));
|
||||
return new PrincipalBean(handler.getPrincipalsByRole(role));
|
||||
} else {
|
||||
throw new SqoopException(SecurityError.AUTH_0012, "Can't get role name");
|
||||
}
|
||||
@ -259,7 +259,7 @@ private JsonBean grantRevokeRole(RequestContext ctx, boolean isGrant) {
|
||||
AuditLoggerManager manager = AuditLoggerManager.getInstance();
|
||||
|
||||
RolesBean rolesBean = new RolesBean();
|
||||
PrincipalsBean principalsBean = new PrincipalsBean();
|
||||
PrincipalBean principalsBean = new PrincipalBean();
|
||||
|
||||
try {
|
||||
JSONObject json = JSONUtils.parse(ctx.getRequest().getReader());
|
||||
@ -290,7 +290,7 @@ private JsonBean grantRevokePrivilege(RequestContext ctx, boolean isGrant) {
|
||||
AuthorizationHandler handler = AuthorizationManager.getInstance().getAuthorizationHandler();
|
||||
AuditLoggerManager manager = AuditLoggerManager.getInstance();
|
||||
|
||||
PrincipalsBean principalsBean = new PrincipalsBean();
|
||||
PrincipalBean principalsBean = new PrincipalBean();
|
||||
PrivilegesBean privilegesBean = new PrivilegesBean();
|
||||
|
||||
try {
|
||||
|
Loading…
Reference in New Issue
Block a user