001 package railo.runtime.functions.s3; 002 003 import java.io.IOException; 004 import java.util.List; 005 006 import railo.commons.io.res.type.s3.AccessControl; 007 import railo.commons.io.res.type.s3.AccessControlPolicy; 008 import railo.commons.io.res.type.s3.S3Resource; 009 import railo.runtime.PageContext; 010 import railo.runtime.exp.PageException; 011 import railo.runtime.op.Caster; 012 013 public class StoreSetACL extends S3Function { 014 015 public static String call(PageContext pc , String url, Object objACL) throws PageException { 016 try { 017 return _call(pc, url, objACL); 018 } catch (IOException e) { 019 throw Caster.toPageException(e); 020 } 021 } 022 023 public static String _call(PageContext pc , String url, Object objACL) throws PageException, IOException { 024 S3Resource res=toS3Resource(pc,url,"StoreSetACL"); 025 invoke(res, objACL); 026 return null; 027 } 028 029 public static void invoke(S3Resource res, Object objACL) throws PageException, IOException { 030 AccessControlPolicy acp = res.getAccessControlPolicy(); 031 List<AccessControl> acl = AccessControl.toAccessControlList(objACL); 032 AccessControlPolicy.removeDuplicates(acl); 033 acp.setAccessControlList(acl); 034 res.setAccessControlPolicy(acp); 035 } 036 037 038 }