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