package com.bagri.client.hazelcast.serialize.system; import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import com.bagri.client.hazelcast.serialize.DataSerializationFactoryImpl; import com.bagri.core.system.Permission; import com.bagri.core.system.Role; import com.bagri.core.system.User; import com.hazelcast.nio.ObjectDataInput; import com.hazelcast.nio.ObjectDataOutput; import com.hazelcast.nio.serialization.StreamSerializer; public class UserSerializer extends EntitySerializer implements StreamSerializer<User> { @Override public int getTypeId() { return DataSerializationFactoryImpl.cli_XDMUser; } @Override public User read(ObjectDataInput in) throws IOException { Object[] entity = super.readEntity(in); String login = in.readUTF(); String password = in.readUTF(); boolean active = in.readBoolean(); List<Permission> perms = (List<Permission>) in.readObject(); Set<String> roles = (Set<String>) in.readObject(); Map<String, Permission> mPerms = new HashMap<String, Permission>(perms.size()); for (Permission xpm: perms) { mPerms.put(xpm.getResource(), xpm); } User xUser = new User( (int) entity[0], (Date) entity[1], (String) entity[2], mPerms, roles, login, password, active); return xUser; } @Override public void write(ObjectDataOutput out, User xUser) throws IOException { super.writeEntity(out, xUser); out.writeUTF(xUser.getLogin()); out.writeUTF(xUser.getPassword()); out.writeBoolean(xUser.isActive()); // write grants and roles List<Permission> perms = new ArrayList<Permission>(xUser.getPermissions().values()); out.writeObject(perms); out.writeObject(xUser.getIncludedRoles()); } }