result.java
来自「sunxacml源码」· Java 代码 · 共 454 行 · 第 1/2 页
JAVA
454 行
/*
* @(#)Result.java
*
* Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistribution of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistribution in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* Neither the name of Sun Microsystems, Inc. or the names of contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
* ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
* OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN")
* AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
* AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
* DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
* REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
* INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
* OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*
* You acknowledge that this software is not designed or intended for use in
* the design, construction, operation or maintenance of any nuclear facility.
*/
package com.sun.xacml.ctx;
import com.sun.xacml.Indenter;
import com.sun.xacml.Obligation;
import com.sun.xacml.ParsingException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
* Represents the ResultType XML object from the Context schema. Any number
* of these may included in a <code>ResponseCtx</code>. This class encodes the
* decision effect, as well as an optional resource identifier and optional
* status data. Any number of obligations may also be included.
*
* @since 1.0
* @author Seth Proctor
* @author Marco Barreno
*/
public class Result
{
/**
* The decision to permit the request
*/
public static final int DECISION_PERMIT = 0;
/**
* The decision to deny the request
*/
public static final int DECISION_DENY = 1;
/**
* The decision that a decision about the request cannot be made
*/
public static final int DECISION_INDETERMINATE = 2;
/**
* The decision that nothing applied to us
*/
public static final int DECISION_NOT_APPLICABLE = 3;
// string versions of the 4 Decision types used for encoding
public static final String [] DECISIONS = { "Permit", "Deny",
"Indeterminate",
"NotApplicable" };
// the decision effect
private int decision = -1;
// the status data
private Status status = null;
// the resource identifier or null if there is none
private String resource = null;
// the set of obligations which may be empty
private Set obligations;
/**
* Constructs a <code>Result</code> object with default status data (OK).
*
* @param decision the decision effect to include in this result. This
* must be one of the four fields in this class.
*
* @throws IllegalArgumentException if decision is not valid
*/
public Result(int decision) throws IllegalArgumentException {
this(decision, null, null, null);
}
/**
* Constructs a <code>Result</code> object with default status data (OK),
* and obligations, but no resource identifier.
*
* @param decision the decision effect to include in this result. This
* must be one of the four fields in this class.
* @param obligations the obligations the PEP must handle
*
* @throws IllegalArgumentException if decision is not valid
*/
public Result(int decision, Set obligations)
throws IllegalArgumentException
{
this(decision, null, null, obligations);
}
/**
* Constructs a <code>Result</code> object with status data but without a
* resource identifier. Typically the decision is DECISION_INDETERMINATE
* in this case, though that's not always true.
*
* @param decision the decision effect to include in this result. This
* must be one of the four fields in this class.
* @param status the <code>Status</code> to include in this result
*
* @throws IllegalArgumentException if decision is not valid
*/
public Result(int decision, Status status) throws IllegalArgumentException {
this(decision, status, null, null);
}
/**
* Constructs a <code>Result</code> object with status data and obligations
* but without a resource identifier. Typically the decision is
* DECISION_INDETERMINATE in this case, though that's not always true.
*
* @param decision the decision effect to include in this result. This
* must be one of the four fields in this class.
* @param status the <code>Status</code> to include in this result
* @param obligations the obligations the PEP must handle
*
* @throws IllegalArgumentException if decision is not valid
*/
public Result(int decision, Status status, Set obligations)
throws IllegalArgumentException
{
this(decision, status, null, obligations);
}
/**
* Constructs a <code>Result</code> object with a resource identifier,
* but default status data (OK). The resource being named must match
* the resource (or a descendent of the resource in the case of a
* hierarchical resource) from the associated request.
*
* @param decision the decision effect to include in this result. This
* must be one of the four fields in this class.
* @param resource a <code>String</code> naming the resource
*
* @throws IllegalArgumentException if decision is not valid
*/
public Result(int decision, String resource)
throws IllegalArgumentException
{
this(decision, null, resource, null);
}
/**
* Constructs a <code>Result</code> object with a resource identifier,
* and obligations, but default status data (OK). The resource being named
* must match the resource (or a descendent of the resource in the case of
* a hierarchical resource) from the associated request.
*
* @param decision the decision effect to include in this result. This
* must be one of the four fields in this class.
* @param resource a <code>String</code> naming the resource
* @param obligations the obligations the PEP must handle
*
* @throws IllegalArgumentException if decision is not valid
*/
public Result(int decision, String resource, Set obligations)
throws IllegalArgumentException
{
this(decision, null, resource, obligations);
}
/**
* Constructs a <code>Result</code> object with status data and a
* resource identifier.
*
* @param decision the decision effect to include in this result. This
* must be one of the four fields in this class.
* @param status the <code>Status</code> to include in this result
* @param resource a <code>String</code> naming the resource
*
* @throws IllegalArgumentException if decision is not valid
*/
public Result(int decision, Status status, String resource)
throws IllegalArgumentException
{
this(decision, status, resource, null);
}
/**
* Constructs a <code>Result</code> object with status data, a
* resource identifier, and obligations.
*
* @param decision the decision effect to include in this result. This
* must be one of the four fields in this class.
* @param status the <code>Status</code> to include in this result
* @param resource a <code>String</code> naming the resource
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?