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 );