blob: 04a1e09ad8e43ca98da3c5dcbaca5424328e5792 [file] [log] [blame]
Thomas Vachuska02aeb032015-01-06 22:36:30 -08001/*
2 * Copyright 2015 Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.core;
17
Changhoon Yoonb856b812015-08-10 03:47:19 +090018import org.onosproject.security.Permission;
19
Thomas Vachuska02aeb032015-01-06 22:36:30 -080020import java.net.URI;
Thomas Vachuskaebf5e542015-02-03 19:38:13 -080021import java.util.List;
Thomas Vachuska02aeb032015-01-06 22:36:30 -080022import java.util.Optional;
23import java.util.Set;
24
25/**
26 * Abstraction of a network control/management application.
27 */
28public interface Application {
29
30 /**
31 * Returns the application name id.
32 *
33 * @return application identifier
34 */
35 ApplicationId id();
36
37 /**
38 * Returns the application version.
39 *
40 * @return application version
41 */
42 Version version();
43
44 /**
Simon Huntafae2f72016-03-04 21:18:23 -080045 * Returns the title of the application.
46 * This should be a short, human-readable string, as opposed
47 * to the unique identifier returned by {@link #id()}.
48 *
49 * @return application title text
50 */
51 String title();
52
53 /**
Thomas Vachuska02aeb032015-01-06 22:36:30 -080054 * Returns description of the application.
55 *
56 * @return application description text
57 */
58 String description();
59
60 /**
Jian Lic35415d2016-01-14 17:22:31 -080061 * Returns category of the application.
62 *
63 * @return application category text
64 */
65 String category();
66
67 /**
68 * Returns url of the application.
69 *
70 * @return application url
71 */
72 String url();
73
74 /**
75 * Returns readme of the application.
76 *
77 * @return application readme
78 */
79 String readme();
80
81 /**
82 * Returns icon of the application.
83 *
84 * @return application icon
85 */
86 byte[] icon();
87
88 /**
Thomas Vachuska02aeb032015-01-06 22:36:30 -080089 * Returns the name of the application origin, group or company.
90 *
91 * @return application origin
92 */
93 String origin();
94
95 /**
Changhoon Yoonbdeb88a2015-05-12 20:35:31 +090096 * Returns the role of the application.
97 *
98 * @return application role
99 */
100 ApplicationRole role();
101
102 /**
Thomas Vachuska02aeb032015-01-06 22:36:30 -0800103 * Returns the permissions requested by the application.
104 *
105 * @return requested permissions
106 */
107 Set<Permission> permissions();
108
109 /**
110 * Returns the feature repository URI. Null value signifies that the
111 * application did not provide its own features repository.
112 *
113 * @return optional feature repo URL
114 */
115 Optional<URI> featuresRepo();
116
117 /**
Thomas Vachuskaebf5e542015-02-03 19:38:13 -0800118 * Returns the list of features comprising the application. At least one
Thomas Vachuska02aeb032015-01-06 22:36:30 -0800119 * feature must be given.
120 *
121 * @return application features
122 */
Thomas Vachuskaebf5e542015-02-03 19:38:13 -0800123 List<String> features();
Thomas Vachuska761f0042015-11-11 19:10:17 -0800124
125 /**
126 * Returns list of required application names.
127 *
128 * @return list of application names
129 */
130 List<String> requiredApps();
Thomas Vachuska02aeb032015-01-06 22:36:30 -0800131}