summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/dmaap/dmf/mr/metabroker/Topic.java
blob: 04df4b49facfbad7612dcb170189bb58e7b0c5b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*******************************************************************************
 *  ============LICENSE_START=======================================================
 *  org.onap.dmaap
 *  ================================================================================
 *  Copyright © 2017 AT&T Intellectual Property. All rights reserved.
 *  ================================================================================
 *  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.
 *  ============LICENSE_END=========================================================
 *  
 *  ECOMP is a trademark and service mark of AT&T Intellectual Property.
 *  
 *******************************************************************************/
package org.onap.dmaap.dmf.mr.metabroker;

import com.att.nsa.configs.ConfigDbException;
import com.att.nsa.security.NsaAcl;
import com.att.nsa.security.NsaApiKey;
import com.att.nsa.security.ReadWriteSecuredResource;

/**
 * This is the interface for topic and all the topic related operations
 * get topic name, owner, description, transactionEnabled etc.
 * @author nilanjana.maity
 *
 */
public interface Topic extends ReadWriteSecuredResource
{	
	/**
	 * User defined exception for access denied while access the topic for Publisher and consumer
	 * @author nilanjana.maity
	 *
	 *//*
	public class AccessDeniedException extends Exception
	
		*//**
		 * AccessDenied Description
		 *//*
		
		*//**
		 * AccessDenied Exception for the user while authenticating the user request
		 * @param user
		 *//*
		
		private static final long serialVersionUID = 1L;
	}*/

	/**
	 * Get this topic's name
	 * @return
	 */
	String getName ();

	/**
	 * Get the API key of the owner of this topic.
	 * @return
	 */
	String getOwner ();

	/**
	 * Get a description of the topic, as set by the owner at creation time.
	 * @return
	 */
	String getDescription ();
	
	/**
	 * If the topic is transaction enabled
	 * @return boolean true/false
	 */
	boolean isTransactionEnabled();
	
	/**
	 * Get the ACL for reading on this topic. Can be null.
	 * @return
	 */
	NsaAcl getReaderAcl ();

	/**
	 * Get the ACL for writing on this topic.  Can be null.
	 * @return
	 */
	NsaAcl getWriterAcl ();

	/**
	 * Check if this user can read the topic. Throw otherwise. Note that
	 * user may be null.
	 * @param user
	 */
	void checkUserRead ( NsaApiKey user ) throws AccessDeniedException;

	/**
	 * Check if this user can write to the topic. Throw otherwise. Note
	 * that user may be null.
	 * @param user
	 */
	void checkUserWrite ( NsaApiKey user ) throws AccessDeniedException;

	/**
	 * allow the given user to publish
	 * @param publisherId
	 * @param asUser
	 */
	void permitWritesFromUser ( String publisherId, NsaApiKey asUser ) throws AccessDeniedException, ConfigDbException;

	/**
	 * deny the given user from publishing
	 * @param publisherId
	 * @param asUser
	 */
	void denyWritesFromUser ( String publisherId, NsaApiKey asUser ) throws AccessDeniedException, ConfigDbException;

	/**
	 * allow the given user to read the topic
	 * @param consumerId
	 * @param asUser
	 */
	void permitReadsByUser ( String consumerId, NsaApiKey asUser ) throws AccessDeniedException, ConfigDbException;

	/**
	 * deny the given user from reading the topic
	 * @param consumerId
	 * @param asUser
	 * @throws ConfigDbException 
	 */
	void denyReadsByUser ( String consumerId, NsaApiKey asUser ) throws AccessDeniedException, ConfigDbException;
}