diff options
Diffstat (limited to 'framework/src/onos/core/api/src/main/java/org/onosproject/app/DefaultApplicationDescription.java')
-rw-r--r-- | framework/src/onos/core/api/src/main/java/org/onosproject/app/DefaultApplicationDescription.java | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/app/DefaultApplicationDescription.java b/framework/src/onos/core/api/src/main/java/org/onosproject/app/DefaultApplicationDescription.java new file mode 100644 index 00000000..710d0f9c --- /dev/null +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/app/DefaultApplicationDescription.java @@ -0,0 +1,125 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * 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. + */ +package org.onosproject.app; + +import org.onosproject.core.ApplicationRole; +import org.onosproject.core.Version; +import org.onosproject.security.Permission; + +import java.net.URI; +import java.util.List; +import java.util.Optional; +import java.util.Set; + +import static com.google.common.base.MoreObjects.toStringHelper; +import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.base.Preconditions.checkNotNull; + +/** + * Default implementation of network control/management application descriptor. + */ +public class DefaultApplicationDescription implements ApplicationDescription { + + private final String name; + private final Version version; + private final String description; + private final String origin; + private final ApplicationRole role; + private final Set<Permission> permissions; + private final Optional<URI> featuresRepo; + private final List<String> features; + + /** + * Creates a new application descriptor using the supplied data. + * + * @param name application name + * @param version application version + * @param description application description + * @param origin origin company + * @param role application role + * @param permissions requested permissions + * @param featuresRepo optional features repo URI + * @param features application features + */ + public DefaultApplicationDescription(String name, Version version, + String description, String origin, + ApplicationRole role, Set<Permission> permissions, + URI featuresRepo, List<String> features) { + this.name = checkNotNull(name, "Name cannot be null"); + this.version = checkNotNull(version, "Version cannot be null"); + this.description = checkNotNull(description, "Description cannot be null"); + this.origin = checkNotNull(origin, "Origin cannot be null"); + this.role = checkNotNull(role, "Role cannot be null"); + this.permissions = checkNotNull(permissions, "Permissions cannot be null"); + this.featuresRepo = Optional.ofNullable(featuresRepo); + this.features = checkNotNull(features, "Features cannot be null"); + checkArgument(!features.isEmpty(), "There must be at least one feature"); + } + + @Override + public String name() { + return name; + } + + @Override + public Version version() { + return version; + } + + @Override + public String description() { + return description; + } + + @Override + public String origin() { + return origin; + } + + @Override + public ApplicationRole role() { + return role; + } + + @Override + public Set<Permission> permissions() { + return permissions; + } + + @Override + public Optional<URI> featuresRepo() { + return featuresRepo; + } + + @Override + public List<String> features() { + return features; + } + + @Override + public String toString() { + return toStringHelper(this) + .add("name", name) + .add("version", version) + .add("description", description) + .add("origin", origin) + .add("role", role) + .add("permissions", permissions) + .add("featuresRepo", featuresRepo) + .add("features", features) + .toString(); + } +} |