1 21 package oracle.toplink.essentials.internal.queryframework; 23 24 import java.security.AccessController ; 25 import java.security.PrivilegedActionException ; 26 import java.util.Comparator ; 27 import java.lang.reflect.Constructor ; 28 import oracle.toplink.essentials.exceptions.*; 29 import oracle.toplink.essentials.internal.security.PrivilegedAccessHelper; 30 import oracle.toplink.essentials.internal.security.PrivilegedGetConstructorFor; 31 import oracle.toplink.essentials.internal.security.PrivilegedInvokeConstructor; 32 import oracle.toplink.essentials.internal.security.PrivilegedNewInstanceFromClass; 33 34 45 public class SortedCollectionContainerPolicy extends CollectionContainerPolicy { 46 protected Comparator m_comparator = null; 47 48 52 public SortedCollectionContainerPolicy() { 53 super(); 54 } 55 56 60 public SortedCollectionContainerPolicy(Class containerClass) { 61 super(containerClass); 62 } 63 64 69 public void setComparator(Comparator comparator) { 70 m_comparator = comparator; 71 } 72 73 77 public Comparator getComparator() { 78 return m_comparator; 79 } 80 81 86 public Object containerInstance() { 87 try { 88 if (m_comparator != null) { 89 Object [] arguments = new Object [] { m_comparator }; 90 Class [] constructClass = new Class [] { Comparator .class }; 91 Constructor constructor = null; 92 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){ 93 try { 94 constructor = (Constructor )AccessController.doPrivileged(new PrivilegedGetConstructorFor(getContainerClass(), constructClass, false)); 95 return AccessController.doPrivileged(new PrivilegedInvokeConstructor(constructor, arguments)); 96 } catch (PrivilegedActionException exception) { 97 throw QueryException.couldNotInstantiateContainerClass(getContainerClass(), exception.getException()); 98 } 99 } else { 100 constructor = PrivilegedAccessHelper.getConstructorFor(getContainerClass(), constructClass, false); 101 return PrivilegedAccessHelper.invokeConstructor(constructor, arguments); 102 } 103 } else { 104 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){ 105 try { 106 return AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(getContainerClass())); 107 } catch (PrivilegedActionException exception) { 108 throw QueryException.couldNotInstantiateContainerClass(getContainerClass(), exception.getException()); 109 } 110 } else { 111 return PrivilegedAccessHelper.newInstanceFromClass(getContainerClass()); 112 } 113 } 114 } catch (Exception ex) { 115 throw QueryException.couldNotInstantiateContainerClass(getContainerClass(), ex); 116 } 117 } 118 } 119 | Popular Tags |