blob: a84dbdee7ca7b275df9dd1cd38136381e1e2ec36 [file] [log] [blame]
/*******************************************************************************
* Copyright 2017 General Electric Company
*
* 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.
*
* SPDX-License-Identifier: Apache-2.0
*******************************************************************************/
package com.ge.predix.acs.rest;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import com.ge.predix.acs.model.Attribute;
import com.ge.predix.acs.model.Effect;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
*
* @author acs-engineers@ge.com
*
*/
@SuppressWarnings({ "javadoc", "nls" })
@ApiModel(description = "Policy evaluation result")
public class PolicyEvaluationResult {
@ApiModelProperty(value = "The effect of the policy evaluation", required = true)
private Effect effect;
@ApiModelProperty(value = "The collection of the subject's attributes", required = false)
private Set<Attribute> subjectAttributes = Collections.emptySet();
@ApiModelProperty(value = "The collection of the resource's attributes", required = false)
private List<Attribute> resourceAttributes = Collections.emptyList();
@ApiModelProperty(
value = "The resources that matched the policy evaluation request's resource identifier based on "
+ "the attribute uri templates defined in the policy set. For example, a policy request of"
+ " /v1/site/1/plant/asset/1\nagainst a policy set with attribute uri templates:\n"
+ " /v1{attribute_uri}/plant/asset/{asset_id}\n /v1/site/{site_id}/plant{attribute_uri}\n"
+ "would include:\n" + " /site/1\n /asset/2\n" + "in this set, respectively.",
required = false)
private Set<String> resolvedResourceUris = Collections.emptySet();
private long timestamp;
private String message;
public PolicyEvaluationResult() {
this.effect = Effect.NOT_APPLICABLE;
}
public PolicyEvaluationResult(final Effect decision) {
this.effect = decision;
}
public PolicyEvaluationResult(final Effect effect, final Set<Attribute> subjectAttributes,
final List<Attribute> resourceAttributes) {
this.effect = effect;
this.subjectAttributes = subjectAttributes;
this.resourceAttributes = resourceAttributes;
}
public PolicyEvaluationResult(final Effect effect, final Set<Attribute> subjectAttributes,
final List<Attribute> resourceAttributes, final Set<String> resolvedResourceUris) {
this.effect = effect;
this.subjectAttributes = subjectAttributes;
this.resourceAttributes = resourceAttributes;
this.resolvedResourceUris = resolvedResourceUris;
}
public Effect getEffect() {
return this.effect;
}
public void setEffect(final Effect effect) {
this.effect = effect;
}
public Set<Attribute> getSubjectAttributes() {
return this.subjectAttributes;
}
public void setSubjectAttributes(final Set<Attribute> subjectAttributes) {
this.subjectAttributes = subjectAttributes;
}
public List<Attribute> getResourceAttributes() {
return this.resourceAttributes;
}
public void setResourceAttributes(final List<Attribute> resourceAttributes) {
this.resourceAttributes = resourceAttributes;
}
public Set<String> getResolvedResourceUris() {
return this.resolvedResourceUris;
}
public void setResolvedResourceUris(final Set<String> resolvedResourceUris) {
this.resolvedResourceUris = resolvedResourceUris;
}
public long getTimestamp() {
return this.timestamp;
}
public void setTimestamp(final long timestamp) {
this.timestamp = timestamp;
}
@Override
public String toString() {
return "PolicyEvaluationResult [effect=" + this.effect + ", subjectAttributes=" + this.subjectAttributes
+ ", resourceAttributes=" + this.resourceAttributes + "]";
}
public String getMessage() {
return message;
}
public void setMessage(final String message) {
this.message = message;
}
}