Package org.apache.ws.policy.util

Source Code of org.apache.ws.policy.util.PolicyUtil

/*
* Copyright 2004,2005 The Apache Software Foundation.
*
* 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.
*/

package org.apache.ws.policy.util;

import java.util.Iterator;
import java.util.List;

import javax.xml.namespace.QName;

import org.apache.ws.policy.AndCompositeAssertion;
import org.apache.ws.policy.Policy;
import org.apache.ws.policy.PrimitiveAssertion;
import org.apache.ws.policy.XorCompositeAssertion;

/**
* WSPolicyUtil contains several utility methods for policy manipulations.
*
* @author Sanka Samaranayake (sanka@apache.org)
*/
public class PolicyUtil {

  public static boolean matchByQName(PrimitiveAssertion primTermA,
      PrimitiveAssertion primTermB) {
    return primTermA.getName().equals(primTermB.getName());
  }

  public static boolean matchByQName(List primTermsA, List primTermsB) {
    List larger = (primTermsA.size() > primTermsB.size()) ? primTermsA
        : primTermsB;
    List smaller = (primTermsA.size() < primTermsB.size()) ? primTermsA
        : primTermsB;

    Iterator iterator = larger.iterator();
    PrimitiveAssertion primTerm;
    QName qname;
    Iterator iterator2;
    while (iterator.hasNext()) {
      primTerm = (PrimitiveAssertion) iterator.next();
      qname = primTerm.getName();
      iterator2 = smaller.iterator();

      boolean match = false;
      PrimitiveAssertion primTerm2;
      while (iterator2.hasNext()) {
        primTerm2 = (PrimitiveAssertion) iterator2.next();
        if (primTerm2.getName().equals(qname)) {
          match = true;
          break;
        }
      }
      if (!match) {
        return false;
      }
    }
    return true;
  }

  public static List getPrimTermsList(Policy policy) {
    if (!policy.isNormalized()) {
      policy = (Policy) policy.normalize();
    }

    XorCompositeAssertion xorTerm = (XorCompositeAssertion) policy
        .getTerms().get(0);
    AndCompositeAssertion andTerm = (AndCompositeAssertion) xorTerm
        .getTerms().get(0);

    return andTerm.getTerms();
  }

  public static Policy getSinglePolicy(List policyList, PolicyRegistry reg) {
    Policy policyTerm = null;
    Iterator iterator = policyList.iterator();

    Policy policyTerm2;
    while (iterator.hasNext()) {
      policyTerm2 = (Policy) iterator.next();
      policyTerm = (policyTerm == null) ? policyTerm2
          : (Policy) policyTerm.merge(policyTerm2, reg);
    }

    if (!policyTerm.isNormalized()) {
      policyTerm = (Policy) policyTerm.normalize();
    }
    return policyTerm;
  }

  public static Policy getPolicy(List terms) {
    Policy policyTerm = new Policy();
    XorCompositeAssertion xorTerm = new XorCompositeAssertion();
    AndCompositeAssertion andTerm = new AndCompositeAssertion();

    andTerm.addTerms(terms);
    xorTerm.addTerm(andTerm);
    policyTerm.addTerm(xorTerm);

    return policyTerm;
  }
}
TOP

Related Classes of org.apache.ws.policy.util.PolicyUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.