@Override
public TConditionalSession startConditionalUpdate(TInfo tinfo, TCredentials credentials,
List<ByteBuffer> authorizations, String tableIdStr, TDurability tdurabilty,
String classLoaderContext) throws ThriftSecurityException, TException {
Table.ID tableId = Table.ID.of(tableIdStr);
Authorizations userauths = null;
Namespace.ID namespaceId = getNamespaceId(credentials, tableId);
if (!security.canConditionallyUpdate(credentials, tableId, namespaceId))
throw new ThriftSecurityException(credentials.getPrincipal(),
SecurityErrorCode.PERMISSION_DENIED);
userauths = security.getUserAuthorizations(credentials);
for (ByteBuffer auth : authorizations)
if (!userauths.contains(ByteBufferUtil.toBytes(auth)))
throw new ThriftSecurityException(credentials.getPrincipal(),
SecurityErrorCode.BAD_AUTHORIZATIONS);
ConditionalSession cs = new ConditionalSession(credentials,
new Authorizations(authorizations), tableId, DurabilityImpl.fromThrift(tdurabilty));
long sid = sessionManager.createSession(cs, false);
return new TConditionalSession(sid, lockID, sessionManager.getMaxIdleTime());
}