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.util.concurrent.CheckedFuture;
12 import com.google.common.util.concurrent.Futures;
13 import com.google.common.util.concurrent.ListenableFuture;
15 import org.opendaylight.controller.md.sal.common.api.TransactionStatus;
16 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
17 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
18 import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction;
19 import org.opendaylight.yang.gen.v1.urn.aaa.yang.authz.ds.rev140722.ActionType;
20 import org.opendaylight.yangtools.yang.common.RpcResult;
21 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
22 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
25 * Created by wdec on 02/09/2014.
27 public class AuthzWriteOnlyTransaction implements DOMDataWriteTransaction {
29 private final DOMDataWriteTransaction domDataWriteTransaction;
31 public AuthzWriteOnlyTransaction(DOMDataWriteTransaction wo) {
32 this.domDataWriteTransaction = wo;
36 public void put(LogicalDatastoreType logicalDatastoreType,
37 YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode<?, ?> normalizedNode) {
39 if (AuthzServiceImpl.isAuthorized(logicalDatastoreType, yangInstanceIdentifier,
41 domDataWriteTransaction.put(logicalDatastoreType, yangInstanceIdentifier,
47 public void merge(LogicalDatastoreType logicalDatastoreType,
48 YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode<?, ?> normalizedNode) {
50 if (AuthzServiceImpl.isAuthorized(logicalDatastoreType, yangInstanceIdentifier,
52 domDataWriteTransaction.merge(logicalDatastoreType, yangInstanceIdentifier,
58 public boolean cancel() {
59 if (AuthzServiceImpl.isAuthorized(ActionType.Cancel)) {
60 return domDataWriteTransaction.cancel();
66 public void delete(LogicalDatastoreType logicalDatastoreType,
67 YangInstanceIdentifier yangInstanceIdentifier) {
69 if (AuthzServiceImpl.isAuthorized(logicalDatastoreType, yangInstanceIdentifier,
71 domDataWriteTransaction.delete(logicalDatastoreType, yangInstanceIdentifier);
76 public CheckedFuture<Void, TransactionCommitFailedException> submit() {
77 if (AuthzServiceImpl.isAuthorized(ActionType.Submit)) {
78 return domDataWriteTransaction.submit();
80 TransactionCommitFailedException e = new TransactionCommitFailedException(
82 return Futures.immediateFailedCheckedFuture(e);
87 public ListenableFuture<RpcResult<TransactionStatus>> commit() {
88 if (AuthzServiceImpl.isAuthorized(ActionType.Commit)) {
89 return domDataWriteTransaction.commit();
91 TransactionCommitFailedException e = new TransactionCommitFailedException(
93 return Futures.immediateFailedCheckedFuture(e);
97 public Object getIdentifier() {
98 if (AuthzServiceImpl.isAuthorized(ActionType.GetIdentifier)) {
99 return domDataWriteTransaction.getIdentifier();