package com.bagri.client.hazelcast.task; import static com.bagri.client.hazelcast.serialize.DataSerializationFactoryImpl.factoryId; import java.io.IOException; import com.bagri.core.api.AccessManagement; import com.bagri.core.api.SchemaRepository; import com.bagri.core.api.BagriException; import com.bagri.core.system.Permission; import com.hazelcast.nio.ObjectDataInput; import com.hazelcast.nio.ObjectDataOutput; import com.hazelcast.nio.serialization.IdentifiedDataSerializable; public abstract class ClientAwareTask implements IdentifiedDataSerializable { protected String clientId; protected SchemaRepository repo; public ClientAwareTask() { // } public ClientAwareTask(String clientId) { this.clientId = clientId; } @Override public int getFactoryId() { return factoryId; } protected void checkPermission(Permission.Value perm) throws BagriException { //repo.getXQProcessor(clientId); String user = repo.getUserName(); if (!((AccessManagement) repo.getAccessManagement()).hasPermission(user, perm)) { throw new BagriException("User " + user + " has no permission to " + perm + " documents", BagriException.ecAccess); } } @Override public void readData(ObjectDataInput in) throws IOException { clientId = in.readUTF(); } @Override public void writeData(ObjectDataOutput out) throws IOException { out.writeUTF(clientId); } }