下面列出了怎么用hudson.model.DescriptorVisibilityFilter的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* Get a list of all {@link NodePropertyDescriptor}s we can use to define DockerSlave NodeProperties.
*/
@SuppressWarnings("cast")
public List<NodePropertyDescriptor> getNodePropertiesDescriptors() {
// Copy/paste hudson.model.Slave.SlaveDescriptor.nodePropertyDescriptors marked as @Restricted for reasons I don't get
List<NodePropertyDescriptor> result = new ArrayList<>();
Collection<NodePropertyDescriptor> list =
(Collection) Jenkins.getInstance().getDescriptorList(NodeProperty.class);
for (NodePropertyDescriptor npd : DescriptorVisibilityFilter.applyType(DockerTransientNode.class, list)) {
if (npd.isApplicable(DockerTransientNode.class)) {
result.add(npd);
}
}
final Iterator<NodePropertyDescriptor> iterator = result.iterator();
while (iterator.hasNext()) {
final NodePropertyDescriptor de = iterator.next();
// see https://issues.jenkins-ci.org/browse/JENKINS-47697
if ("org.jenkinsci.plugins.matrixauth.AuthorizationMatrixNodeProperty".equals(de.getKlass().toJavaClass().getName())) {
iterator.remove();
}
}
return result;
}
@SuppressWarnings("unused") // used by jelly
public List<Descriptor<PodRetention>> getAllowedPodRetentions() {
Jenkins jenkins = Jenkins.getInstanceOrNull();
if (jenkins == null) {
return new ArrayList<>(0);
}
return DescriptorVisibilityFilter.apply(this, jenkins.getDescriptorList(PodRetention.class));
}
@SuppressWarnings("unused") // Used by jelly
@Restricted(DoNotUse.class) // Used by jelly
public List<? extends Descriptor> getEnvVarsDescriptors() {
return DescriptorVisibilityFilter.apply(null, Jenkins.getInstance().getDescriptorList(TemplateEnvVar.class));
}
@SuppressWarnings("unused") // Used by jelly
@Restricted(DoNotUse.class) // Used by jelly
public List<? extends Descriptor> getEnvVarsDescriptors() {
return DescriptorVisibilityFilter.apply(null, Jenkins.getInstance().getDescriptorList(TemplateEnvVar.class));
}