package com.brightgenerous.lang;
import java.util.ArrayList;
import java.util.List;
public class SecurityManagerBuilder {
private SecurityManager deleg;
private volatile List<ISecurityManagerFilter> filters;
protected SecurityManagerBuilder() {
}
protected SecurityManagerBuilder(SecurityManager deleg) {
this.deleg = deleg;
}
public static SecurityManagerBuilder create() {
return new SecurityManagerBuilder();
}
public static SecurityManagerBuilder create(SecurityManager deleg) {
return new SecurityManagerBuilder(deleg);
}
public SecurityManager build() {
return new SecurityManagerWrapper(deleg, new ListSecurityManagerFilter(filters));
}
public SecurityManager get() {
return deleg;
}
public SecurityManagerBuilder set(SecurityManager deleg) {
this.deleg = deleg;
return this;
}
public SecurityManagerBuilder add(ISecurityManagerFilter... fs) {
if ((fs != null) && (0 < fs.length)) {
for (ISecurityManagerFilter filter : fs) {
if (filter != null) {
getFilters().add(filter);
}
}
}
return this;
}
public SecurityManagerBuilder addNoExit() {
return add(new NoExitSecurityManagerFilter());
}
public SecurityManagerBuilder remove(ISecurityManagerFilter... fs) {
if ((fs != null) && (0 < fs.length)) {
for (ISecurityManagerFilter filter : fs) {
if (filter != null) {
getFilters().remove(filter);
}
}
}
return this;
}
public SecurityManagerBuilder clear() {
if (filters != null) {
filters.clear();
}
return this;
}
protected List<ISecurityManagerFilter> getFilters() {
if (filters == null) {
synchronized (this) {
if (filters == null) {
filters = new ArrayList<>();
}
}
}
return filters;
}
}