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.hazelcast.nio.ObjectDataInput; import com.hazelcast.nio.ObjectDataOutput; import com.hazelcast.nio.serialization.StreamSerializer; public class RoleSerializer extends EntitySerializer implements StreamSerializer<Role> { @Override public int getTypeId() { return DataSerializationFactoryImpl.cli_XDMRole; } @Override public Role read(ObjectDataInput in) throws IOException { Object[] entity = super.readEntity(in); String name = in.readUTF(); String description = in.readUTF(); 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); } Role xRole = new Role( (int) entity[0], (Date) entity[1], (String) entity[2], mPerms, roles, name, description); return xRole; } @Override public void write(ObjectDataOutput out, Role xRole) throws IOException { super.writeEntity(out, xRole); out.writeUTF(xRole.getName()); out.writeUTF(xRole.getDescription()); // write permissions and roles List<Permission> perms = new ArrayList<Permission>(xRole.getPermissions().values()); out.writeObject(perms); out.writeObject(xRole.getIncludedRoles()); } }