S3PolicyContext context = new S3PolicyContext(PolicyActions.PutObject, destinationBucketName);
context.setKeyName(destinationKeyName);
context.setEvalParam(ConditionKeys.MetaData, request.getDirective().toString());
context.setEvalParam(ConditionKeys.CopySource, "/" + request.getSourceBucketName() + "/" + request.getSourceKey());
if (PolicyAccess.DENY == verifyPolicy(context))
throw new PermissionDeniedException("Access Denied - bucket policy DENY result");
S3GetObjectResponse originalObject = handleRequest(getRequest);
int resultCode = originalObject.getResultCode();
if (200 != resultCode) {
response.setResultCode(resultCode);