1421 lines · 53.3 KB · Java
RawDownload
            this.which = which;            this.elements = new LinkedList<E>(set);        }         public int size() {            return elements.size();        }         public Iterator<E> iterator() {            final LinkedList<E> list = elements;            return new Iterator<E>() {                ListIterator<E> i = list.listIterator(0);                 public boolean hasNext() {return i.hasNext();}                 public E next() {                    if (which != Subject.PRIV_CREDENTIAL_SET) {                        return i.next();                    }                     SecurityManager sm = System.getSecurityManager();                    if (sm != null) {                        try {                            sm.checkPermission(new PrivateCredentialPermission                                (list.get(i.nextIndex()).getClass().getName(),                                subject.getPrincipals()));                        } catch (SecurityException se) {                            i.next();                            throw (se);                        }                    }                    return i.next();                }                 public void remove() {                     if (subject.isReadOnly()) {                        throw new IllegalStateException(ResourcesMgr.getString                                ("Subject.is.read.only"));                    }                     java.lang.SecurityManager sm = System.getSecurityManager();                    if (sm != null) {                        switch (which) {                        case Subject.PRINCIPAL_SET:                            sm.checkPermission(AuthPermissionHolder.MODIFY_PRINCIPALS_PERMISSION);                            break;                        case Subject.PUB_CREDENTIAL_SET:                            sm.checkPermission(AuthPermissionHolder.MODIFY_PUBLIC_CREDENTIALS_PERMISSION);                            break;                        default:                            sm.checkPermission(AuthPermissionHolder.MODIFY_PRIVATE_CREDENTIALS_PERMISSION);                            break;                        }                    }                    i.remove();                }            };        }         public boolean add(E o) {             if (subject.isReadOnly()) {                throw new IllegalStateException                        (ResourcesMgr.getString("Subject.is.read.only"));            }             java.lang.SecurityManager sm = System.getSecurityManager();            if (sm != null) {                switch (which) {                case Subject.PRINCIPAL_SET:                    sm.checkPermission(AuthPermissionHolder.MODIFY_PRINCIPALS_PERMISSION);                    break;                case Subject.PUB_CREDENTIAL_SET:                    sm.checkPermission(AuthPermissionHolder.MODIFY_PUBLIC_CREDENTIALS_PERMISSION);                    break;                default:                    sm.checkPermission(AuthPermissionHolder.MODIFY_PRIVATE_CREDENTIALS_PERMISSION);                    break;                }            }             switch (which) {            case Subject.PRINCIPAL_SET:                if (!(o instanceof Principal)) {                    throw new SecurityException(ResourcesMgr.getString                        ("attempting.to.add.an.object.which.is.not.an.instance.of.java.security.Principal.to.a.Subject.s.Principal.Set"));                }                break;            default:                // ok to add Objects of any kind to credential sets                break;            }             // check for duplicates            if (!elements.contains(o))                return elements.add(o);            else                return false;        }         public boolean remove(Object o) {             final Iterator<E> e = iterator();            while (e.hasNext()) {                E next;                if (which != Subject.PRIV_CREDENTIAL_SET) {                    next = e.next();                } else {                    next = java.security.AccessController.doPrivileged                        (new java.security.PrivilegedAction<E>() {                        public E run() {                            return e.next();                        }                    });                }                 if (next == null) {                    if (o == null) {                        e.remove();                        return true;                    }                } else if (next.equals(o)) {                    e.remove();                    return true;                }            }            return false;        }         public boolean contains(Object o) {            final Iterator<E> e = iterator();            while (e.hasNext()) {                E next;                if (which != Subject.PRIV_CREDENTIAL_SET) {                    next = e.next();                } else {                     // For private credentials:                    // If the caller does not have read permission for                    // for o.getClass(), we throw a SecurityException.                    // Otherwise we check the private cred set to see whether                    // it contains the Object                     SecurityManager sm = System.getSecurityManager();                    if (sm != null) {                        sm.checkPermission(new PrivateCredentialPermission                                                (o.getClass().getName(),                                                subject.getPrincipals()));                    }                    next = java.security.AccessController.doPrivileged                        (new java.security.PrivilegedAction<E>() {                        public E run() {                            return e.next();                        }                    });                }                 if (next == null) {                    if (o == null) {                        return true;                    }                } else if (next.equals(o)) {                    return true;                }            }            return false;        }         public boolean removeAll(Collection<?> c) {             boolean modified = false;            final Iterator<E> e = iterator();            while (e.hasNext()) {                E next;                if (which != Subject.PRIV_CREDENTIAL_SET) {                    next = e.next();                } else {                    next = java.security.AccessController.doPrivileged                        (new java.security.PrivilegedAction<E>() {                        public E run() {                            return e.next();                        }                    });                }                 Iterator<?> ce = c.iterator();                while (ce.hasNext()) {                    Object o = ce.next();                    if (next == null) {                        if (o == null) {                            e.remove();                            modified = true;                            break;                        }                    } else if (next.equals(o)) {                        e.remove();                        modified = true;                        break;                    }                }            }            return modified;        }         public boolean retainAll(Collection<?> c) {             boolean modified = false;            boolean retain = false;            final Iterator<E> e = iterator();            while (e.hasNext()) {                retain = false;                E next;                if (which != Subject.PRIV_CREDENTIAL_SET) {                    next = e.next();                } else {                    next = java.security.AccessController.doPrivileged                        (new java.security.PrivilegedAction<E>() {                        public E run() {                            return e.next();                        }                    });                }                 Iterator<?> ce = c.iterator();                while (ce.hasNext()) {                    Object o = ce.next();                    if (next == null) {                        if (o == null) {                            retain = true;                            break;                        }                    } else if (next.equals(o)) {                        retain = true;                        break;                    }                }                 if (!retain) {                    e.remove();                    retain = false;                    modified = true;                }            }            return modified;        }         public void clear() {            final Iterator<E> e = iterator();            while (e.hasNext()) {                E next;                if (which != Subject.PRIV_CREDENTIAL_SET) {                    next = e.next();                } else {                    next = java.security.AccessController.doPrivileged                        (new java.security.PrivilegedAction<E>() {                        public E run() {                            return e.next();                        }                    });                }                e.remove();            }        }         /**         * Writes this object out to a stream (i.e., serializes it).         *         * <p>         *         * @serialData If this is a private credential set,         *      a security check is performed to ensure that         *      the caller has permission to access each credential         *      in the set.  If the security check passes,         *      the set is serialized.         */        private void writeObject(java.io.ObjectOutputStream oos)                throws java.io.IOException {             if (which == Subject.PRIV_CREDENTIAL_SET) {                // check permissions before serializing                Iterator<E> i = iterator();                while (i.hasNext()) {                    i.next();                }            }            ObjectOutputStream.PutField fields = oos.putFields();            fields.put("this$0", subject);            fields.put("elements", elements);            fields.put("which", which);            oos.writeFields();        }         private void readObject(ObjectInputStream ois)            throws IOException, ClassNotFoundException        {            ObjectInputStream.GetField fields = ois.readFields();            subject = (Subject) fields.get("this$0", null);            elements = (LinkedList<E>) fields.get("elements", null);            which = fields.get("which", 0);        }    }     /**     * This class implements a <code>Set</code> which returns only     * members that are an instance of a specified Class.     */    private class ClassSet<T> extends AbstractSet<T> {         private int which;        private Class<T> c;        private Set<T> set;         ClassSet(int which, Class<T> c) {            this.which = which;            this.c = c;            set = new HashSet<T>();             switch (which) {            case Subject.PRINCIPAL_SET:                synchronized(principals) { populateSet(); }                break;            case Subject.PUB_CREDENTIAL_SET:                synchronized(pubCredentials) { populateSet(); }                break;            default:                synchronized(privCredentials) { populateSet(); }                break;            }        }         private void populateSet() {            final Iterator<?> iterator;            switch(which) {            case Subject.PRINCIPAL_SET:                iterator = Subject.this.principals.iterator();                break;            case Subject.PUB_CREDENTIAL_SET:                iterator = Subject.this.pubCredentials.iterator();                break;            default:                iterator = Subject.this.privCredentials.iterator();                break;            }             // Check whether the caller has permisson to get            // credentials of Class c             while (iterator.hasNext()) {                Object next;                if (which == Subject.PRIV_CREDENTIAL_SET) {                    next = java.security.AccessController.doPrivileged                        (new java.security.PrivilegedAction<Object>() {                        public Object run() {                            return iterator.next();                        }                    });                } else {                    next = iterator.next();                }                if (c.isAssignableFrom(next.getClass())) {                    if (which != Subject.PRIV_CREDENTIAL_SET) {                        set.add((T)next);                    } else {                        // Check permission for private creds                        SecurityManager sm = System.getSecurityManager();                        if (sm != null) {                            sm.checkPermission(new PrivateCredentialPermission                                                (next.getClass().getName(),                                                Subject.this.getPrincipals()));                        }                        set.add((T)next);                    }                }            }        }         public int size() {            return set.size();        }         public Iterator<T> iterator() {            return set.iterator();        }         public boolean add(T o) {             if (!o.getClass().isAssignableFrom(c)) {                MessageFormat form = new MessageFormat(ResourcesMgr.getString                        ("attempting.to.add.an.object.which.is.not.an.instance.of.class"));                Object[] source = {c.toString()};                throw new SecurityException(form.format(source));            }             return set.add(o);        }    }     static class AuthPermissionHolder {        static final AuthPermission DO_AS_PERMISSION =            new AuthPermission("doAs");         static final AuthPermission DO_AS_PRIVILEGED_PERMISSION =            new AuthPermission("doAsPrivileged");         static final AuthPermission SET_READ_ONLY_PERMISSION =            new AuthPermission("setReadOnly");         static final AuthPermission GET_SUBJECT_PERMISSION =            new AuthPermission("getSubject");         static final AuthPermission MODIFY_PRINCIPALS_PERMISSION =            new AuthPermission("modifyPrincipals");         static final AuthPermission MODIFY_PUBLIC_CREDENTIALS_PERMISSION =            new AuthPermission("modifyPublicCredentials");         static final AuthPermission MODIFY_PRIVATE_CREDENTIALS_PERMISSION =            new AuthPermission("modifyPrivateCredentials");    }}

Lines 1001–1421 of 1421. Previous lines

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t