/*- * ============LICENSE_START======================================================= * ONAP-XACML * ================================================================================ * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ * 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. * ============LICENSE_END========================================================= */ package org.onap.policy.xacml.std.pap; import com.att.research.xacml.api.pap.PDPPIPConfig; import com.att.research.xacml.api.pap.PDPPolicy; import com.att.research.xacml.api.pap.PDPStatus; import com.fasterxml.jackson.annotation.JsonIgnore; import java.io.Serializable; import java.util.Collections; import java.util.HashSet; import java.util.Set; import lombok.ToString; @ToString public class StdPDPStatus implements Serializable, PDPStatus { private static final long serialVersionUID = 1L; private Status status = Status.UNKNOWN; private Set loadErrors = new HashSet<>(); private Set loadWarnings = new HashSet<>(); private transient Set loadedPolicies = new HashSet<>(); private transient Set loadedRootPolicies = new HashSet<>(); private transient Set failedPolicies = new HashSet<>(); private transient Set loadedPIPConfigs = new HashSet<>(); private transient Set failedPIPConfigs = new HashSet<>(); public StdPDPStatus() { // // Default constructor // } public void set(StdPDPStatus newStatus) { this.status = newStatus.status; this.loadErrors.clear(); this.loadErrors.addAll(newStatus.getLoadErrors()); this.loadWarnings.clear(); this.loadWarnings.addAll(newStatus.getLoadWarnings()); this.loadedPolicies.clear(); this.loadedPolicies.addAll(newStatus.getLoadedPolicies()); this.loadedRootPolicies.clear(); this.loadedRootPolicies.addAll(newStatus.getLoadedRootPolicies()); this.failedPolicies.clear(); this.failedPolicies.addAll(newStatus.getFailedPolicies()); this.loadedPIPConfigs.clear(); this.loadedPIPConfigs.addAll(newStatus.getLoadedPipConfigs()); this.failedPIPConfigs.clear(); this.failedPIPConfigs.addAll(newStatus.getFailedPipConfigs()); } @Override public Status getStatus() { return this.status; } public void setStatus(Status status) { this.status = status; } @Override public Set getLoadErrors() { return Collections.unmodifiableSet(this.loadErrors); } public void setLoadErrors(Set errors) { this.loadErrors = errors; } public void addLoadError(String error) { this.loadErrors.add(error); } @Override public Set getLoadWarnings() { return Collections.unmodifiableSet(this.loadWarnings); } public void setLoadWarnings(Set warnings) { this.loadWarnings = warnings; } public void addLoadWarning(String warning) { this.loadWarnings.add(warning); } @Override public Set getLoadedPolicies() { return Collections.unmodifiableSet(this.loadedPolicies); } public void setLoadedPolicies(Set policies) { this.loadedPolicies = policies; } public void addLoadedPolicy(PDPPolicy policy) { this.loadedPolicies.add(policy); } @Override public Set getLoadedRootPolicies() { return Collections.unmodifiableSet(this.loadedRootPolicies); } public void setLoadedRootPolicies(Set policies) { this.loadedRootPolicies = policies; } public void addRootPolicy(PDPPolicy policy) { this.loadedRootPolicies.add(policy); } public void addAllLoadedRootPolicies(Set policies) { this.loadedRootPolicies.addAll(policies); } @Override public Set getFailedPolicies() { return Collections.unmodifiableSet(this.failedPolicies); } public void setFailedPolicies(Set policies) { this.failedPolicies = policies; } public void addFailedPolicy(PDPPolicy policy) { this.failedPolicies.add(policy); } @Override public boolean policiesOK() { return this.failedPolicies.isEmpty(); } @Override public Set getLoadedPipConfigs() { return Collections.unmodifiableSet(this.loadedPIPConfigs); } public void setLoadedPipConfigs(Set configs) { this.loadedPIPConfigs = configs; } public void addLoadedPipConfig(PDPPIPConfig config) { this.loadedPIPConfigs.add(config); } @Override public Set getFailedPipConfigs() { return Collections.unmodifiableSet(this.failedPIPConfigs); } public void setFailedPipConfigs(Set configs) { this.failedPIPConfigs = configs; } public void addFailedPipConfig(PDPPIPConfig config) { this.failedPIPConfigs.add(config); } @Override public boolean pipConfigOK() { return this.failedPIPConfigs.isEmpty(); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + (failedPIPConfigs.hashCode()); result = prime * result + (failedPolicies.hashCode()); result = prime * result + (loadErrors.hashCode()); result = prime * result + (loadWarnings.hashCode()); result = prime * result + (loadedPIPConfigs.hashCode()); result = prime * result + (loadedPolicies.hashCode()); result = prime * result + (status.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } StdPDPStatus other = (StdPDPStatus) obj; if (!failedPIPConfigs.equals(other.failedPIPConfigs)) { return false; } if (!failedPolicies.equals(other.failedPolicies)) { return false; } if (!loadErrors.equals(other.loadErrors)) { return false; } if (!loadWarnings.equals(other.loadWarnings)) { return false; } if (!loadedPIPConfigs.equals(other.loadedPIPConfigs)) { return false; } if (!loadedPolicies.equals(other.loadedPolicies)) { return false; } if (!loadedRootPolicies.equals(other.loadedRootPolicies)) { return false; } if (status != other.status) { return false; } return true; } @Override @JsonIgnore public boolean isOk() { if (!this.policiesOK()) { return false; } if (!this.pipConfigOK()) { return false; } return this.status == Status.UP_TO_DATE; } }