blob: 1528f351ed9233e93ac4fd0e9cacc5223b48c337 [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.app;
17
Changhoon Yoonbdeb88a2015-05-12 20:35:31 +090018import org.onosproject.core.ApplicationRole;
Thomas Vachuska02aeb032015-01-06 22:36:30 -080019import org.onosproject.core.Version;
Changhoon Yoonb856b812015-08-10 03:47:19 +090020import org.onosproject.security.Permission;
Thomas Vachuska02aeb032015-01-06 22:36:30 -080021
22import java.net.URI;
Thomas Vachuskaebf5e542015-02-03 19:38:13 -080023import java.util.List;
Thomas Vachuska02aeb032015-01-06 22:36:30 -080024import java.util.Optional;
25import java.util.Set;
26
27/**
28 * Description of a network control/management application.
29 */
30public interface ApplicationDescription {
31
32 /**
33 * Returns the application name id.
34 *
35 * @return application identifier
36 */
37 String name();
38
39 /**
40 * Returns the application version.
41 *
42 * @return application version
43 */
44 Version version();
45
46 /**
Jian Lic35415d2016-01-14 17:22:31 -080047 * Returns the name of the application origin, group or company.
48 *
49 * @return application origin
50 */
51 String origin();
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.
Thomas Vachuska02aeb032015-01-06 22:36:30 -080062 *
Jian Lic35415d2016-01-14 17:22:31 -080063 * @return application category text
Thomas Vachuska02aeb032015-01-06 22:36:30 -080064 */
Jian Lic35415d2016-01-14 17:22:31 -080065 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();
Thomas Vachuska02aeb032015-01-06 22:36:30 -080087
88 /**
Changhoon Yoonbdeb88a2015-05-12 20:35:31 +090089 * Returns the role of the application.
90 *
91 * @return application role
92 */
93 ApplicationRole role();
94
95 /**
Thomas Vachuska02aeb032015-01-06 22:36:30 -080096 * Returns the permissions requested by the application.
97 *
98 * @return requested permissions
99 */
100 Set<Permission> permissions();
101
102 /**
103 * Returns the feature repository URI. Null value signifies that the
104 * application did not provide its own features repository.
105 *
106 * @return optional feature repo URL
107 */
108 Optional<URI> featuresRepo();
109
110 /**
Thomas Vachuskaebf5e542015-02-03 19:38:13 -0800111 * Returns the list of features comprising the application. At least one
Thomas Vachuska02aeb032015-01-06 22:36:30 -0800112 * feature must be given.
113 *
114 * @return application features
115 */
Thomas Vachuskaebf5e542015-02-03 19:38:13 -0800116 List<String> features();
Thomas Vachuska761f0042015-11-11 19:10:17 -0800117
118 /**
119 * Returns list of required application names.
120 *
121 * @return list of application names
122 */
123 List<String> requiredApps();
Thomas Vachuska02aeb032015-01-06 22:36:30 -0800124}