protected void buildPolicies(Composite composite, BuilderContext context) {
// build policies recursively
for (Component component : composite.getComponents()) {
Implementation implementation = component.getImplementation();
if (implementation instanceof Composite) {
buildPolicies((Composite)implementation, context);
}
}
for (Component component : composite.getComponents()) {
for (ComponentService componentService : component.getServices()) {
for (Endpoint ep : componentService.getEndpoints()) {
Set<String> policyNames = getPolicyNames(ep);
// check that only one policy language is present in the endpoint's policy sets
if (policyNames.size() > 1){
error(context.getMonitor(),
"MultiplePolicyLanguagesInEP",
this,
ep.toString(),
policyNames.toString());
} else {
for (PolicySet ps : ep.getPolicySets()) {
for (PolicyExpression exp : ps.getPolicies()) {
PolicyBuilder builder = builders.getPolicyBuilder(exp.getName());
if (builder != null) {
builder.build(ep, context);
}
}
}
}
}
}
for (ComponentReference componentReference : component.getReferences()) {
for (EndpointReference epr : componentReference.getEndpointReferences()) {
Set<String> policyNames = getPolicyNames(epr);
// check that only one policy language is present in the endpoint references's policy sets
if (policyNames.size() > 1){
error(context.getMonitor(),
"MultiplePolicyLanguagesInEPR",
this,
epr.toString(),
policyNames.toString());
} else {
for (PolicySet ps : epr.getPolicySets()) {
for (PolicyExpression exp : ps.getPolicies()) {
PolicyBuilder builder = builders.getPolicyBuilder(exp.getName());
if (builder != null) {
builder.build(epr, context);
}
}
}
}
}
}
Implementation implementation = component.getImplementation();
if (implementation != null) {
Set<String> policyNames = getPolicyNames(implementation);
// check that only one policy language is present in the implementations's policy sets
if (policyNames.size() > 1){
error(context.getMonitor(),
"MultiplePolicyLanguagesInImplementation",
this,
component.toString(),
policyNames.toString());
} else {
for (PolicySet ps : implementation.getPolicySets()) {
for (PolicyExpression exp : ps.getPolicies()) {
PolicyBuilder builder = builders.getPolicyBuilder(exp.getName());
if (builder != null) {
builder.build(component, implementation, context);
}