blob: e8ff9ec46b5ecbcb55e0f8cedbf7d820b40fbb41 [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 /**
47 * Returns description of the application.
48 *
49 * @return application description text
50 */
51 String description();
52
53 /**
54 * Returns the name of the application origin, group or company.
55 *
56 * @return application origin
57 */
58 String origin();
59
60 /**
Changhoon Yoonbdeb88a2015-05-12 20:35:31 +090061 * Returns the role of the application.
62 *
63 * @return application role
64 */
65 ApplicationRole role();
66
67 /**
Thomas Vachuska02aeb032015-01-06 22:36:30 -080068 * Returns the permissions requested by the application.
69 *
70 * @return requested permissions
71 */
72 Set<Permission> permissions();
73
74 /**
75 * Returns the feature repository URI. Null value signifies that the
76 * application did not provide its own features repository.
77 *
78 * @return optional feature repo URL
79 */
80 Optional<URI> featuresRepo();
81
82 /**
Thomas Vachuskaebf5e542015-02-03 19:38:13 -080083 * Returns the list of features comprising the application. At least one
Thomas Vachuska02aeb032015-01-06 22:36:30 -080084 * feature must be given.
85 *
86 * @return application features
87 */
Thomas Vachuskaebf5e542015-02-03 19:38:13 -080088 List<String> features();
Thomas Vachuska761f0042015-11-11 19:10:17 -080089
90 /**
91 * Returns list of required application names.
92 *
93 * @return list of application names
94 */
95 List<String> requiredApps();
Thomas Vachuska02aeb032015-01-06 22:36:30 -080096}