Package org.glite.authz.pap.services

Source Code of org.glite.authz.pap.services.XACMLPolicyManagementService

/**
* Copyright (c) Members of the EGEE Collaboration. 2006-2009.
* See http://www.eu-egee.org/partners/ for details on the copyright holders.
*
* 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.glite.authz.pap.services;

import java.rmi.RemoteException;

import org.glite.authz.pap.authz.operations.policymanagement.AddPoliciesOperation;
import org.glite.authz.pap.authz.operations.policymanagement.AddPolicyOperation;
import org.glite.authz.pap.authz.operations.policymanagement.AddPolicySetOperation;
import org.glite.authz.pap.authz.operations.policymanagement.GetLocalPolicyOperation;
import org.glite.authz.pap.authz.operations.policymanagement.GetLocalPolicySetOperation;
import org.glite.authz.pap.authz.operations.policymanagement.GetLocalRootPolicySetOperation;
import org.glite.authz.pap.authz.operations.policymanagement.GetRemotePolicyOperation;
import org.glite.authz.pap.authz.operations.policymanagement.GetRemotePolicySetOperation;
import org.glite.authz.pap.authz.operations.policymanagement.GetRemoteRootPolicySetOperation;
import org.glite.authz.pap.authz.operations.policymanagement.HasLocalPolicyOperation;
import org.glite.authz.pap.authz.operations.policymanagement.HasLocalPolicySetOperation;
import org.glite.authz.pap.authz.operations.policymanagement.HasRemotePolicyOperation;
import org.glite.authz.pap.authz.operations.policymanagement.HasRemotePolicySetOperation;
import org.glite.authz.pap.authz.operations.policymanagement.ListLocalPoliciesOperation;
import org.glite.authz.pap.authz.operations.policymanagement.ListLocalPolicySetOperation;
import org.glite.authz.pap.authz.operations.policymanagement.ListRemotePoliciesOperation;
import org.glite.authz.pap.authz.operations.policymanagement.ListRemotePolicySetOperation;
import org.glite.authz.pap.authz.operations.policymanagement.MoveOperation;
import org.glite.authz.pap.authz.operations.policymanagement.RemoveObjectByIdAndReferencesOperation;
import org.glite.authz.pap.authz.operations.policymanagement.RemovePolicyOperation;
import org.glite.authz.pap.authz.operations.policymanagement.RemovePolicySetOperation;
import org.glite.authz.pap.authz.operations.policymanagement.StorePolicyOperation;
import org.glite.authz.pap.authz.operations.policymanagement.StorePolicySetOperation;
import org.glite.authz.pap.authz.operations.policymanagement.UpdatePolicyOperation;
import org.glite.authz.pap.authz.operations.policymanagement.UpdatePolicySetOperation;
import org.glite.authz.pap.common.Pap;
import org.glite.authz.pap.papmanagement.PapManager;
import org.glite.authz.pap.services.xacml_policy_management.axis_skeletons.XACMLPolicyManagement;
import org.opensaml.xacml.policy.PolicySetType;
import org.opensaml.xacml.policy.PolicyType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class XACMLPolicyManagementService implements XACMLPolicyManagement {

    private static final Logger log = LoggerFactory.getLogger(XACMLPolicyManagementService.class);

    public String[] addPolicies(String alias, int index, String policySetId, String[] policyIdPrefixArray,
            PolicyType[] policyArray) throws RemoteException {
        log.info(String.format("addPolicy(policySetId=\"%s\"\");", policySetId));

        try {
            synchronized (ServicesUtils.highLevelOperationLock) {

                return AddPoliciesOperation.instance(alias,
                                                     index,
                                                     policySetId,
                                                     policyIdPrefixArray,
                                                     policyArray).execute();
            }

        } catch (RuntimeException e) {
            ServiceClassExceptionManager.log(log, e);
            throw e;
        }
    }

    public String addPolicy(String alias, int index, String policySetId, String policyIdPrefix,
            PolicyType policy) throws RemoteException {

        log.info(String.format("addPolicy(policySetId=\"%s\", policyIdPrefix=\"%s\");",
                               policySetId,
                               policyIdPrefix));
        try {

            synchronized (ServicesUtils.highLevelOperationLock) {
                return AddPolicyOperation.instance(alias, index, policySetId, policyIdPrefix, policy)
                                         .execute();
            }

        } catch (RuntimeException e) {
            ServiceClassExceptionManager.log(log, e);
            throw e;
        }
    }

    public String addPolicySet(String alias, int index, PolicySetType policySet) throws RemoteException {

        log.info(String.format("addPolicySet(policySetId=\"%s\");", policySet.getPolicySetId()));

        try {
            synchronized (ServicesUtils.highLevelOperationLock) {
                return AddPolicySetOperation.instance(alias, index, policySet).execute();
            }
        } catch (RuntimeException e) {
            ServiceClassExceptionManager.log(log, e);
            throw e;
        }
    }

    public PolicySetType getRootPolicySet(String alias) throws RemoteException {
        log.info(String.format("getPAPPolicySet(\"%s\");", alias));

        try {

            if (alias == null) {
                alias = Pap.DEFAULT_PAP_ALIAS;
            }

            Pap ps = PapManager.getInstance().getPap(alias);

            if (ps.isLocal()) {
                return GetLocalRootPolicySetOperation.instance(ps).execute();
            } else {
                return GetRemoteRootPolicySetOperation.instance(ps).execute();
            }

        } catch (RuntimeException e) {
            ServiceClassExceptionManager.log(log, e);
            throw e;
        }
    }

    public PolicyType getPolicy(String alias, String policyId) throws RemoteException {
        log.info(String.format("getPolicy(\"%s\");", policyId));

        try {

            if (alias == null) {
                alias = Pap.DEFAULT_PAP_ALIAS;
            }

            Pap ps = PapManager.getInstance().getPap(alias);

            PolicyType policy;

            if (ps.isLocal()) {
                policy = GetLocalPolicyOperation.instance(ps, policyId).execute();
            } else {
                policy = GetRemotePolicyOperation.instance(ps, policyId).execute();
            }

            return policy;

        } catch (RuntimeException e) {
            ServiceClassExceptionManager.log(log, e);
            throw e;
        }
    }

    public PolicySetType getPolicySet(String alias, String policySetId) throws RemoteException {
        log.info(String.format("getPolicySet(\"%s\");", policySetId));

        try {

            if (alias == null) {
                alias = Pap.DEFAULT_PAP_ALIAS;
            }

            Pap ps = PapManager.getInstance().getPap(alias);

            PolicySetType policySet;

            if (ps.isLocal()) {
                policySet = GetLocalPolicySetOperation.instance(ps, policySetId).execute();
            } else {
                policySet = GetRemotePolicySetOperation.instance(ps, policySetId).execute();
            }
            return policySet;

        } catch (RuntimeException e) {
            ServiceClassExceptionManager.log(log, e);
            throw e;
        }
    }

    public boolean hasPolicy(String alias, String policyId) throws RemoteException {
        log.info(String.format("hasPolicy(\"%s\");", policyId));
        try {

            if (alias == null) {
                alias = Pap.DEFAULT_PAP_ALIAS;
            }

            Pap ps = PapManager.getInstance().getPap(alias);

            synchronized (ServicesUtils.highLevelOperationLock) {
                if (ps.isLocal()) {
                    return HasLocalPolicyOperation.instance(ps, policyId).execute();
                } else {
                    return HasRemotePolicyOperation.instance(ps, policyId).execute();
                }
            }

        } catch (RuntimeException e) {
            ServiceClassExceptionManager.log(log, e);
            throw e;
        }
    }

    public boolean hasPolicySet(String alias, String policySetId) throws RemoteException {
        log.info(String.format("hasPolicySet(\"%s\");", policySetId));
        try {

            if (alias == null) {
                alias = Pap.DEFAULT_PAP_ALIAS;
            }

            Pap ps = PapManager.getInstance().getPap(alias);

            synchronized (ServicesUtils.highLevelOperationLock) {
                if (ps.isLocal()) {
                    return HasLocalPolicySetOperation.instance(ps, policySetId).execute();
                } else {
                    return HasRemotePolicySetOperation.instance(ps, policySetId).execute();
                }
            }

        } catch (RuntimeException e) {
            ServiceClassExceptionManager.log(log, e);
            throw e;
        }
    }

    public PolicyType[] listPolicies(String papAlias) throws RemoteException {
        log.info("listPolicies();");

        try {

            if (papAlias == null) {
                papAlias = Pap.DEFAULT_PAP_ALIAS;
            }

            Pap ps = PapManager.getInstance().getPap(papAlias);

            synchronized (ServicesUtils.highLevelOperationLock) {
                if (ps.isLocal()) {
                    return ListLocalPoliciesOperation.instance(ps).execute();
                } else {
                    return ListRemotePoliciesOperation.instance(ps).execute();
                }
            }

        } catch (RuntimeException e) {
            ServiceClassExceptionManager.log(log, e);
            throw e;
        }
    }

    public PolicySetType[] listPolicySets(String papAlias) throws RemoteException {
        log.info("listPolicySets();");

        try {

            if (papAlias == null) {
                papAlias = Pap.DEFAULT_PAP_ALIAS;
            }

            Pap ps = PapManager.getInstance().getPap(papAlias);

            synchronized (ServicesUtils.highLevelOperationLock) {
                if (ps.isLocal()) {
                    return ListLocalPolicySetOperation.instance(ps).execute();
                } else {
                    return ListRemotePolicySetOperation.instance(ps).execute();
                }
            }

        } catch (RuntimeException e) {
            ServiceClassExceptionManager.log(log, e);
            throw e;
        }
    }

    public void move(String alias, String id, String pivotId, boolean moveAfter) throws RemoteException {
        log.info(String.format("move(id=\"%s\", pivotId=\"%s\", moveAfter=%b);", id, pivotId, moveAfter));

        try {

            synchronized (ServicesUtils.highLevelOperationLock) {
                MoveOperation.instance(alias, id, pivotId, moveAfter).execute();
            }

        } catch (RuntimeException e) {
            ServiceClassExceptionManager.log(log, e);
            throw e;
        }
    }

    public boolean removeObjectByIdAndReferences(String alias, String id) throws RemoteException {
        log.info(String.format("removeObjectByIdAndReferences(\"%s\");", id));

        try {

            synchronized (ServicesUtils.highLevelOperationLock) {
                return RemoveObjectByIdAndReferencesOperation.instance(alias, id).execute();
            }

        } catch (RuntimeException e) {
            ServiceClassExceptionManager.log(log, e);
            throw e;
        }
    }

    public boolean removePolicy(String alias, String policyId) throws RemoteException {
        log.info(String.format("removePolicy(\"%s\");", policyId));
        try {

            synchronized (ServicesUtils.highLevelOperationLock) {
                return RemovePolicyOperation.instance(alias, policyId).execute();
            }

        } catch (RuntimeException e) {
            ServiceClassExceptionManager.log(log, e);
            throw e;
        }
    }

    public boolean removePolicySet(String alias, String policySetId) throws RemoteException {
        log.info(String.format("removePolicySet(\"%s\");", policySetId));

        try {

            synchronized (ServicesUtils.highLevelOperationLock) {
                return RemovePolicySetOperation.instance(alias, policySetId).execute();
            }

        } catch (RuntimeException e) {
            ServiceClassExceptionManager.log(log, e);
            throw e;
        }
    }

    public String storePolicy(String alias, String idPrefix, PolicyType policy) throws RemoteException {
        log.info("storePolicy();");

        try {

            return StorePolicyOperation.instance(alias, idPrefix, policy).execute();

        } catch (RuntimeException e) {
            ServiceClassExceptionManager.log(log, e);
            throw e;
        }
    }

    public String storePolicySet(String alias, String idPrefix, PolicySetType policySet)
            throws RemoteException {
        log.info("storePolicySet();");

        try {

            return StorePolicySetOperation.instance(alias, idPrefix, policySet).execute();

        } catch (RuntimeException e) {
            ServiceClassExceptionManager.log(log, e);
            throw e;
        }
    }

    public boolean updatePolicy(String alias, String version, PolicyType policy) throws RemoteException {
        log.info(String.format("updatePolicy(version=\"%s\", id=\"%s\");", version, policy.getPolicyId()));

        try {

            synchronized (ServicesUtils.highLevelOperationLock) {
                return UpdatePolicyOperation.instance(alias, version, policy).execute();
            }

        } catch (RuntimeException e) {
            ServiceClassExceptionManager.log(log, e);
            throw e;
        }
    }

    public boolean updatePolicySet(String alias, String version, PolicySetType policySet)
            throws RemoteException {
        log.info(String.format("updatePolicySet(version=\"%s\", id=\"%s\");",
                               version,
                               policySet.getPolicySetId()));

        try {

            synchronized (ServicesUtils.highLevelOperationLock) {
                return UpdatePolicySetOperation.instance(alias, version, policySet).execute();
            }

        } catch (RuntimeException e) {
            ServiceClassExceptionManager.log(log, e);
            throw e;
        }
    }
}
TOP

Related Classes of org.glite.authz.pap.services.XACMLPolicyManagementService

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.