/** * Returns the list of {@link CredentialsDescriptor} instances that are applicable within this * {@link CredentialsProvider}. * * @return the list of {@link CredentialsDescriptor} instances that are applicable within this * {@link CredentialsProvider}. * @since 2.0 */ public final List<CredentialsDescriptor> getCredentialsDescriptors() { List<CredentialsDescriptor> result = DescriptorVisibilityFilter.apply(this, ExtensionList.lookup(CredentialsDescriptor.class)); if (!(result instanceof ArrayList)) { // should never happen, but let's be defensive in case the DescriptorVisibilityFilter contract changes result = new ArrayList<CredentialsDescriptor>(result); } for (Iterator<CredentialsDescriptor> iterator = result.iterator(); iterator.hasNext(); ) { CredentialsDescriptor d = iterator.next(); if (!_isApplicable(d)) { iterator.remove(); } } return result; }
/** * Returns the list of {@link CredentialsDescriptor} instances that are applicable within this * {@link CredentialsProvider}. * * @return the list of {@link CredentialsDescriptor} instances that are applicable within this * {@link CredentialsProvider}. * @since 2.0 */ public final List<CredentialsDescriptor> getCredentialsDescriptors() { List<CredentialsDescriptor> result = DescriptorVisibilityFilter.apply(this, ExtensionList.lookup(CredentialsDescriptor.class)); if (!(result instanceof ArrayList)) { // should never happen, but let's be defensive in case the DescriptorVisibilityFilter contract changes result = new ArrayList<CredentialsDescriptor>(result); } for (Iterator<CredentialsDescriptor> iterator = result.iterator(); iterator.hasNext(); ) { CredentialsDescriptor d = iterator.next(); if (!_isApplicable(d)) { iterator.remove(); } } return result; }
/** * Returns the list of {@link CredentialsDescriptor} instances that are applicable within this * {@link CredentialsStore}. * * @return the list of {@link CredentialsDescriptor} instances that are applicable within this * {@link CredentialsStore}. * @since 2.0 */ public final List<CredentialsDescriptor> getCredentialsDescriptors() { CredentialsProvider provider = getProvider(); List<CredentialsDescriptor> result = DescriptorVisibilityFilter.apply(this, ExtensionList.lookup(CredentialsDescriptor.class)); if (provider != null && provider.isEnabled()) { if (!(result instanceof ArrayList)) { // should never happen, but let's be defensive in case the DescriptorVisibilityFilter contract changes result = new ArrayList<CredentialsDescriptor>(result); } for (Iterator<CredentialsDescriptor> iterator = result.iterator(); iterator.hasNext(); ) { CredentialsDescriptor d = iterator.next(); if (!_isApplicable(d) || !provider._isApplicable(d) || !d.isApplicable(provider)) { iterator.remove(); } } } return result; }
/** * Returns the list of {@link CredentialsDescriptor} instances that are applicable within this * {@link CredentialsStore}. * * @return the list of {@link CredentialsDescriptor} instances that are applicable within this * {@link CredentialsStore}. * @since 2.0 */ public final List<CredentialsDescriptor> getCredentialsDescriptors() { CredentialsProvider provider = getProvider(); List<CredentialsDescriptor> result = DescriptorVisibilityFilter.apply(this, ExtensionList.lookup(CredentialsDescriptor.class)); if (provider != null && provider.isEnabled()) { if (!(result instanceof ArrayList)) { // should never happen, but let's be defensive in case the DescriptorVisibilityFilter contract changes result = new ArrayList<CredentialsDescriptor>(result); } for (Iterator<CredentialsDescriptor> iterator = result.iterator(); iterator.hasNext(); ) { CredentialsDescriptor d = iterator.next(); if (!_isApplicable(d) || !provider._isApplicable(d) || !d.isApplicable(provider)) { iterator.remove(); } } } return result; }
/** * Checks if there is at least one {@link CredentialsDescriptor} applicable within this {@link CredentialsProvider}. * * @return {@code true} if and ony if there is at least one {@link CredentialsDescriptor} applicable within this * {@link CredentialsProvider}. * @since 2.0 */ public final boolean hasCredentialsDescriptors() { ExtensionList<DescriptorVisibilityFilter> filters = DescriptorVisibilityFilter.all(); OUTER: for (CredentialsDescriptor d : ExtensionList.lookup(CredentialsDescriptor.class)) { for (DescriptorVisibilityFilter f : filters) { if (!f.filter(this, d)) { // not visible, let's try the next descriptor continue OUTER; } } if (_isApplicable(d)) { return true; } } return false; }
/** * Checks if there is at least one {@link CredentialsDescriptor} applicable within this {@link CredentialsProvider}. * * @return {@code true} if and ony if there is at least one {@link CredentialsDescriptor} applicable within this * {@link CredentialsProvider}. * @since 2.0 */ public final boolean hasCredentialsDescriptors() { ExtensionList<DescriptorVisibilityFilter> filters = DescriptorVisibilityFilter.all(); OUTER: for (CredentialsDescriptor d : ExtensionList.lookup(CredentialsDescriptor.class)) { for (DescriptorVisibilityFilter f : filters) { if (!f.filter(this, d)) { // not visible, let's try the next descriptor continue OUTER; } } if (_isApplicable(d)) { return true; } } return false; }
/** * Returns {@code true} if the supplied {@link Descriptor} is applicable to this {@link CredentialsProvider}. * * @param descriptor the {@link Descriptor} to check. * @return {@code true} if and only if the supplied {@link Descriptor} is applicable in this * {@link CredentialsProvider}. * @since 2.0 */ public final boolean isApplicable(Descriptor<?> descriptor) { if (!isEnabled()) { return false; } if (descriptor instanceof CredentialsDescriptor) { if (!((CredentialsDescriptor) descriptor).isApplicable(this)) { return false; } } for (DescriptorVisibilityFilter filter : DescriptorVisibilityFilter.all()) { if (!filter.filter(this, descriptor)) { return false; } } return _isApplicable(descriptor); }
/** * Returns {@code true} if the supplied {@link Descriptor} is applicable to this {@link CredentialsProvider}. * * @param descriptor the {@link Descriptor} to check. * @return {@code true} if and only if the supplied {@link Descriptor} is applicable in this * {@link CredentialsProvider}. * @since 2.0 */ public final boolean isApplicable(Descriptor<?> descriptor) { if (!isEnabled()) { return false; } if (descriptor instanceof CredentialsDescriptor) { if (!((CredentialsDescriptor) descriptor).isApplicable(this)) { return false; } } for (DescriptorVisibilityFilter filter : DescriptorVisibilityFilter.all()) { if (!filter.filter(this, descriptor)) { return false; } } return _isApplicable(descriptor); }