2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.aaa.authz.srv;
11 import com.google.common.base.Optional;
12 import com.google.common.util.concurrent.CheckedFuture;
13 import com.google.common.util.concurrent.Futures;
14 import com.google.common.util.concurrent.ListenableFuture;
16 import org.opendaylight.controller.md.sal.common.api.TransactionStatus;
17 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
18 import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
19 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
20 import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction;
21 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authz.ds.rev140722.ActionType;
22 import org.opendaylight.yangtools.yang.common.RpcResult;
23 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
24 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
27 * Created by wdec on 26/08/2014.
29 public class AuthzDataReadWriteTransaction implements DOMDataReadWriteTransaction {
31 private final DOMDataReadWriteTransaction domDataReadWriteTransaction;
33 public AuthzDataReadWriteTransaction(DOMDataReadWriteTransaction domDataReadWriteTransaction) {
34 this.domDataReadWriteTransaction = domDataReadWriteTransaction;
38 public boolean cancel() {
39 if (AuthzServiceImpl.isAuthorized(ActionType.Cancel)) {
40 return domDataReadWriteTransaction.cancel();
46 public void delete(LogicalDatastoreType logicalDatastoreType,
47 YangInstanceIdentifier yangInstanceIdentifier) {
49 if (AuthzServiceImpl.isAuthorized(logicalDatastoreType, yangInstanceIdentifier,
51 domDataReadWriteTransaction.delete(logicalDatastoreType, yangInstanceIdentifier);
56 public CheckedFuture<Void, TransactionCommitFailedException> submit() {
57 if (AuthzServiceImpl.isAuthorized(ActionType.Submit)) {
58 return domDataReadWriteTransaction.submit();
60 TransactionCommitFailedException e = new TransactionCommitFailedException(
62 return Futures.immediateFailedCheckedFuture(e);
67 public ListenableFuture<RpcResult<TransactionStatus>> commit() {
68 if (AuthzServiceImpl.isAuthorized(ActionType.Commit)) {
69 return domDataReadWriteTransaction.commit();
71 TransactionCommitFailedException e = new TransactionCommitFailedException(
73 return Futures.immediateFailedCheckedFuture(e);
77 public CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> read(
78 LogicalDatastoreType logicalDatastoreType, YangInstanceIdentifier yangInstanceIdentifier) {
80 if (AuthzServiceImpl.isAuthorized(logicalDatastoreType, yangInstanceIdentifier,
82 return domDataReadWriteTransaction.read(logicalDatastoreType, yangInstanceIdentifier);
84 ReadFailedException e = new ReadFailedException("Authorization Failed");
85 return Futures.immediateFailedCheckedFuture(e);
89 public CheckedFuture<Boolean, ReadFailedException> exists(
90 LogicalDatastoreType logicalDatastoreType, YangInstanceIdentifier yangInstanceIdentifier) {
92 if (AuthzServiceImpl.isAuthorized(logicalDatastoreType, yangInstanceIdentifier,
94 return domDataReadWriteTransaction.exists(logicalDatastoreType, yangInstanceIdentifier);
96 ReadFailedException e = new ReadFailedException("Authorization Failed");
97 return Futures.immediateFailedCheckedFuture(e);
101 public void put(LogicalDatastoreType logicalDatastoreType,
102 YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode<?, ?> normalizedNode) {
104 if (AuthzServiceImpl.isAuthorized(logicalDatastoreType, yangInstanceIdentifier,
106 domDataReadWriteTransaction.put(logicalDatastoreType, yangInstanceIdentifier,
112 public void merge(LogicalDatastoreType logicalDatastoreType,
113 YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode<?, ?> normalizedNode) {
115 if (AuthzServiceImpl.isAuthorized(logicalDatastoreType, yangInstanceIdentifier,
117 domDataReadWriteTransaction.merge(logicalDatastoreType, yangInstanceIdentifier,
123 public Object getIdentifier() {
124 if (AuthzServiceImpl.isAuthorized(ActionType.GetIdentifier)) {
125 return domDataReadWriteTransaction.getIdentifier();