minor, user and acl jason serializer
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/cfac81bf Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/cfac81bf Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/cfac81bf Branch: refs/heads/master Commit: cfac81bffc22e1fb320c9fd6efe8c4e4ffd219a5 Parents: bf87169 Author: Roger Shi <[email protected]> Authored: Wed Jun 21 15:45:28 2017 +0800 Committer: Hongbin Ma <[email protected]> Committed: Wed Jun 21 16:27:16 2017 +0800 ---------------------------------------------------------------------- .../apache/kylin/rest/service/AclService.java | 45 +++++--------------- .../rest/service/AclTableMigrationTool.java | 7 +-- .../apache/kylin/rest/service/UserService.java | 37 +++------------- 3 files changed, 21 insertions(+), 68 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/cfac81bf/server-base/src/main/java/org/apache/kylin/rest/service/AclService.java ---------------------------------------------------------------------- diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/AclService.java b/server-base/src/main/java/org/apache/kylin/rest/service/AclService.java index 6292c00..02b8e9f 100644 --- a/server-base/src/main/java/org/apache/kylin/rest/service/AclService.java +++ b/server-base/src/main/java/org/apache/kylin/rest/service/AclService.java @@ -18,8 +18,6 @@ package org.apache.kylin.rest.service; -import java.io.DataInputStream; -import java.io.DataOutputStream; import java.io.IOException; import java.lang.reflect.Field; import java.util.ArrayList; @@ -29,10 +27,10 @@ import java.util.List; import java.util.Map; import org.apache.kylin.common.KylinConfig; +import org.apache.kylin.common.persistence.JsonSerializer; import org.apache.kylin.common.persistence.ResourceStore; import org.apache.kylin.common.persistence.RootPersistentEntity; import org.apache.kylin.common.persistence.Serializer; -import org.apache.kylin.common.util.JsonUtil; import org.apache.kylin.rest.exception.BadRequestException; import org.apache.kylin.rest.exception.InternalErrorException; import org.apache.kylin.rest.msg.Message; @@ -79,6 +77,8 @@ public class AclService implements MutableAclService { public static final String DIR_PREFIX = "/acl/"; + public static final Serializer<AclRecord> SERIALIZER = new JsonSerializer<>(AclRecord.class); + @Autowired protected PermissionGrantingStrategy permissionGrantingStrategy; @@ -107,7 +107,8 @@ public class AclService implements MutableAclService { public List<ObjectIdentity> findChildren(ObjectIdentity parentIdentity) { List<ObjectIdentity> oids = new ArrayList<ObjectIdentity>(); try { - List<AclRecord> allAclRecords = aclStore.getAllResources(String.valueOf(DIR_PREFIX), AclRecord.class, AclRecordSerializer.getInstance()); + List<AclRecord> allAclRecords = aclStore.getAllResources(String.valueOf(DIR_PREFIX), AclRecord.class, + SERIALIZER); for (AclRecord record : allAclRecords) { DomainObjectInfo parent = record.getParentDomainObjectInfo(); if (parent != null && parent.getId().equals(String.valueOf(parentIdentity.getIdentifier()))) { @@ -148,7 +149,8 @@ public class AclService implements MutableAclService { Map<ObjectIdentity, Acl> aclMaps = new HashMap<ObjectIdentity, Acl>(); try { for (ObjectIdentity oid : oids) { - AclRecord record = aclStore.getResource(getQueryKeyById(String.valueOf(oid.getIdentifier())), AclRecord.class, AclRecordSerializer.getInstance()); + AclRecord record = aclStore.getResource(getQueryKeyById(String.valueOf(oid.getIdentifier())), + AclRecord.class, SERIALIZER); if (record != null) { SidInfo owner = record.getOwnerInfo(); Sid ownerSid = (null == owner) ? null : (owner.isPrincipal() ? new PrincipalSid(owner.getSid()) : new GrantedAuthoritySid(owner.getSid())); @@ -191,7 +193,8 @@ public class AclService implements MutableAclService { PrincipalSid sid = new PrincipalSid(auth); try { AclRecord record = new AclRecord(new DomainObjectInfo(objectIdentity), null, new SidInfo(sid), true, null); - aclStore.putResource(getQueryKeyById(String.valueOf(objectIdentity.getIdentifier())), record, 0, AclRecordSerializer.getInstance()); + aclStore.putResource(getQueryKeyById(String.valueOf(objectIdentity.getIdentifier())), record, 0, + SERIALIZER); logger.debug("ACL of " + objectIdentity + " created successfully."); } catch (IOException e) { throw new InternalErrorException(e); @@ -228,7 +231,7 @@ public class AclService implements MutableAclService { try { String id = getQueryKeyById(String.valueOf(mutableAcl.getObjectIdentity().getIdentifier())); - AclRecord record = aclStore.getResource(id, AclRecord.class, AclRecordSerializer.getInstance()); + AclRecord record = aclStore.getResource(id, AclRecord.class, SERIALIZER); aclStore.deleteResource(id); if (mutableAcl.getParentAcl() != null) { record.setParentDomainObjectInfo(new DomainObjectInfo(mutableAcl.getParentAcl().getObjectIdentity())); @@ -249,7 +252,7 @@ public class AclService implements MutableAclService { AceInfo aceInfo = new AceInfo(ace); allAceInfo.put(String.valueOf(aceInfo.getSidInfo().getSid()), aceInfo); } - aclStore.putResource(id, record, 0, AclRecordSerializer.getInstance()); + aclStore.putResource(id, record, 0, SERIALIZER); logger.debug("ACL of " + mutableAcl.getObjectIdentity() + " updated successfully."); } catch (IOException e) { throw new InternalErrorException(e); @@ -307,32 +310,6 @@ public class AclService implements MutableAclService { public static String getQueryKeyById(String id) { return DIR_PREFIX + id; } - - protected static class AclRecordSerializer implements Serializer<AclRecord> { - - private static final AclRecordSerializer serializer = new AclRecordSerializer(); - - AclRecordSerializer() { - - } - - public static AclRecordSerializer getInstance() { - return serializer; - } - - @Override - public void serialize(AclRecord obj, DataOutputStream out) throws IOException { - String jsonStr = JsonUtil.writeValueAsString(obj); - out.writeUTF(jsonStr); - } - - @Override - public AclRecord deserialize(DataInputStream in) throws IOException { - String jsonStr = in.readUTF(); - return JsonUtil.readValue(jsonStr, AclRecord.class); - } - } - } @SuppressWarnings("serial") http://git-wip-us.apache.org/repos/asf/kylin/blob/cfac81bf/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java ---------------------------------------------------------------------- diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java b/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java index 428c556..fc50410 100644 --- a/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java +++ b/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java @@ -128,7 +128,7 @@ public class AclTableMigrationTool { record.setEntriesInheriting(getInheriting(result)); record.setAllAceInfo(getAllAceInfo(result)); store.deleteResource(AclService.getQueryKeyById(object.getId())); - store.putResource(AclService.getQueryKeyById(object.getId()), record, 0, AclService.AclRecordSerializer.getInstance()); + store.putResource(AclService.getQueryKeyById(object.getId()), record, 0, AclService.SERIALIZER); result = rs.next(); } } @@ -147,7 +147,8 @@ public class AclTableMigrationTool { User user = hbaseRowToUser(result); UserInfo userInfo = convert(user); store.deleteResource(UserService.getId(userInfo.getUsername())); - store.putResource(UserService.getId(userInfo.getUsername()), userInfo, 0, UserService.UserInfoSerializer.getInstance()); + store.putResource(UserService.getId(userInfo.getUsername()), userInfo, 0, + UserService.SERIALIZER); result = rs.next(); } } @@ -190,7 +191,7 @@ public class AclTableMigrationTool { private DomainObjectInfo getDomainObjectInfoFromRs(Result result) { String type = String.valueOf(result.getValue(Bytes.toBytes(AclConstant.ACL_INFO_FAMILY), Bytes.toBytes(AclConstant.ACL_INFO_FAMILY_TYPE_COLUMN))); - String id = String.valueOf(result.getRow()); + String id = new String(result.getRow()); DomainObjectInfo newInfo = new DomainObjectInfo(); newInfo.setId(id); newInfo.setType(type); http://git-wip-us.apache.org/repos/asf/kylin/blob/cfac81bf/server-base/src/main/java/org/apache/kylin/rest/service/UserService.java ---------------------------------------------------------------------- diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/UserService.java b/server-base/src/main/java/org/apache/kylin/rest/service/UserService.java index 9adfcb8..e803040 100644 --- a/server-base/src/main/java/org/apache/kylin/rest/service/UserService.java +++ b/server-base/src/main/java/org/apache/kylin/rest/service/UserService.java @@ -18,8 +18,6 @@ package org.apache.kylin.rest.service; -import java.io.DataInputStream; -import java.io.DataOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -27,9 +25,9 @@ import java.util.List; import javax.annotation.PostConstruct; import org.apache.kylin.common.KylinConfig; +import org.apache.kylin.common.persistence.JsonSerializer; import org.apache.kylin.common.persistence.ResourceStore; import org.apache.kylin.common.persistence.Serializer; -import org.apache.kylin.common.util.JsonUtil; import org.apache.kylin.rest.exception.InternalErrorException; import org.apache.kylin.rest.msg.Message; import org.apache.kylin.rest.msg.MsgPicker; @@ -51,6 +49,8 @@ public class UserService implements UserDetailsManager { public static final String DIR_PREFIX = "/user/"; + public static final Serializer<UserInfo> SERIALIZER = new JsonSerializer<>(UserInfo.class); + protected ResourceStore aclStore; @PostConstruct @@ -70,7 +70,7 @@ public class UserService implements UserDetailsManager { try { deleteUser(user.getUsername()); String id = getId(user.getUsername()); - aclStore.putResource(id, new UserInfo(user), 0, UserInfoSerializer.getInstance()); + aclStore.putResource(id, new UserInfo(user), 0, SERIALIZER); logger.debug("update user : {}", user.getUsername()); } catch (IOException e) { throw new InternalErrorException(e); @@ -107,7 +107,7 @@ public class UserService implements UserDetailsManager { public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException { Message msg = MsgPicker.getMsg(); try { - UserInfo userInfo = aclStore.getResource(getId(userName), UserInfo.class, UserInfoSerializer.getInstance()); + UserInfo userInfo = aclStore.getResource(getId(userName), UserInfo.class, SERIALIZER); if (userInfo == null) { throw new UsernameNotFoundException(String.format(msg.getUSER_NOT_FOUND(), userName)); } @@ -132,7 +132,7 @@ public class UserService implements UserDetailsManager { public List<UserDetails> listUsers() throws IOException { List<UserDetails> all = new ArrayList<UserDetails>(); - List<UserInfo> userInfos = aclStore.getAllResources(DIR_PREFIX, UserInfo.class, UserInfoSerializer.getInstance()); + List<UserInfo> userInfos = aclStore.getAllResources(DIR_PREFIX, UserInfo.class, SERIALIZER); for (UserInfo info : userInfos) { all.add(wrap(info)); } @@ -154,29 +154,4 @@ public class UserService implements UserDetailsManager { return new User(userInfo.getUsername(), userInfo.getPassword(), authorities); } - public static class UserInfoSerializer implements Serializer<UserInfo> { - - private static final UserInfoSerializer serializer = new UserInfoSerializer(); - - private UserInfoSerializer() { - - } - - public static UserInfoSerializer getInstance() { - return serializer; - } - - @Override - public void serialize(UserInfo userInfo, DataOutputStream out) throws IOException { - String json = JsonUtil.writeValueAsString(userInfo); - out.writeUTF(json); - } - - @Override - public UserInfo deserialize(DataInputStream in) throws IOException { - String json = in.readUTF(); - return JsonUtil.readValue(json, UserInfo.class); - } - } - }
