package com.getperka.flatpack.policy.visitors;
/*
* #%L
* FlatPack Security Policy
* %%
* Copyright (C) 2012 - 2013 Perka Inc.
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import java.util.List;
import com.getperka.flatpack.policy.pst.ActionDefinition;
import com.getperka.flatpack.policy.pst.AllowBlock;
import com.getperka.flatpack.policy.pst.AllowRule;
import com.getperka.flatpack.policy.pst.GroupBlock;
import com.getperka.flatpack.policy.pst.GroupDefinition;
import com.getperka.flatpack.policy.pst.Ident;
import com.getperka.flatpack.policy.pst.PackagePolicy;
import com.getperka.flatpack.policy.pst.PolicyFile;
import com.getperka.flatpack.policy.pst.PolicyNode;
import com.getperka.flatpack.policy.pst.PropertyList;
import com.getperka.flatpack.policy.pst.PropertyPolicy;
import com.getperka.flatpack.policy.pst.TypePolicy;
/**
* A base type for {@link PolicyNode} visitors.
*/
public class PolicyVisitor {
public void endVisit(ActionDefinition x) {}
public void endVisit(AllowBlock x) {}
public void endVisit(AllowRule x) {}
public void endVisit(GroupBlock x) {}
public void endVisit(GroupDefinition x) {}
public void endVisit(Ident<?> x) {}
public void endVisit(PackagePolicy x) {}
public void endVisit(PolicyFile x) {}
public void endVisit(PropertyList x) {}
public void endVisit(PropertyPolicy x) {}
public void endVisit(TypePolicy x) {}
/**
* Traverse a list of nodes. This method is null-safe.
*/
public void traverse(List<? extends PolicyNode> list) {
if (list == null) {
return;
}
for (PolicyNode x : list) {
traverse(x);
}
}
/**
* Traverse a single node. This method should be called in preference to calling
* {@link PolicyNode#accept(PolicyVisitor)} directly, since subclasses of PolicyVisitor may wish
* to influence the traversal logic. It is also null-safe.
*/
public void traverse(PolicyNode x) {
if (x != null) {
x.accept(this);
}
}
public boolean visit(ActionDefinition x) {
return defaultVisit();
}
public boolean visit(AllowBlock x) {
return defaultVisit();
}
public boolean visit(AllowRule x) {
return defaultVisit();
}
public boolean visit(GroupBlock x) {
return defaultVisit();
}
public boolean visit(GroupDefinition x) {
return defaultVisit();
}
public boolean visit(Ident<?> x) {
return defaultVisit();
}
public boolean visit(PackagePolicy x) {
return defaultVisit();
}
public boolean visit(PolicyFile x) {
return defaultVisit();
}
public boolean visit(PropertyList x) {
return defaultVisit();
}
public boolean visit(PropertyPolicy x) {
return defaultVisit();
}
public boolean visit(TypePolicy x) {
return defaultVisit();
}
protected boolean defaultVisit() {
return true;
}
}