mirror of
https://github.com/opennetworkinglab/onos.git
synced 2026-05-05 20:26:16 +02:00
Refactor construction of application objects
- Use a builder and make the constructors private for DefaultApplication - Make DefaultApplication immutable - Use a builder and make the constructors private for DefaultApplicationDescription - Make DefaultApplicationDescription immutable Change-Id: I9499981bd2c0f48aede40682260d51eeae2cab98
This commit is contained in:
parent
201f04b05c
commit
47c954141d
@ -15,15 +15,17 @@
|
||||
*/
|
||||
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 org.onosproject.core.ApplicationRole;
|
||||
import org.onosproject.core.Version;
|
||||
import org.onosproject.security.Permission;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import static com.google.common.base.MoreObjects.toStringHelper;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
@ -31,7 +33,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
|
||||
/**
|
||||
* Default implementation of network control/management application descriptor.
|
||||
*/
|
||||
public class DefaultApplicationDescription implements ApplicationDescription {
|
||||
public final class DefaultApplicationDescription implements ApplicationDescription {
|
||||
|
||||
private final String name;
|
||||
private final Version version;
|
||||
@ -48,6 +50,14 @@ public class DefaultApplicationDescription implements ApplicationDescription {
|
||||
private final List<String> features;
|
||||
private final List<String> requiredApps;
|
||||
|
||||
/**
|
||||
* Default constructor is hidden to prevent calls to new.
|
||||
*/
|
||||
private DefaultApplicationDescription() {
|
||||
// Should not happen
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new application descriptor using the supplied data.
|
||||
*
|
||||
@ -66,27 +76,26 @@ public class DefaultApplicationDescription implements ApplicationDescription {
|
||||
* @param features application features
|
||||
* @param requiredApps list of required application names
|
||||
*/
|
||||
public DefaultApplicationDescription(String name, Version version, String title,
|
||||
String description, String origin, String category,
|
||||
String url, String readme, byte[] icon,
|
||||
ApplicationRole role, Set<Permission> permissions,
|
||||
URI featuresRepo, List<String> features,
|
||||
List<String> requiredApps) {
|
||||
this.name = checkNotNull(name, "Name cannot be null");
|
||||
this.version = checkNotNull(version, "Version cannot be null");
|
||||
this.title = checkNotNull(title, "Title cannot be null");
|
||||
this.description = checkNotNull(description, "Description cannot be null");
|
||||
this.origin = checkNotNull(origin, "Origin cannot be null");
|
||||
this.category = checkNotNull(category, "Category cannot be null");
|
||||
private DefaultApplicationDescription(String name, Version version, String title,
|
||||
String description, String origin, String category,
|
||||
String url, String readme, byte[] icon,
|
||||
ApplicationRole role, Set<Permission> permissions,
|
||||
URI featuresRepo, List<String> features,
|
||||
List<String> requiredApps) {
|
||||
this.name = name;
|
||||
this.version = version;
|
||||
this.title = title;
|
||||
this.description = description;
|
||||
this.origin = origin;
|
||||
this.category = category;
|
||||
this.url = url;
|
||||
this.readme = checkNotNull(readme, "Readme cannot be null");
|
||||
this.readme = readme;
|
||||
this.icon = icon;
|
||||
this.role = checkNotNull(role, "Role cannot be null");
|
||||
this.permissions = checkNotNull(permissions, "Permissions cannot be null");
|
||||
this.role = role;
|
||||
this.permissions = permissions;
|
||||
this.featuresRepo = Optional.ofNullable(featuresRepo);
|
||||
this.features = checkNotNull(features, "Features cannot be null");
|
||||
this.requiredApps = checkNotNull(requiredApps, "Required apps cannot be null");
|
||||
checkArgument(!features.isEmpty(), "There must be at least one feature");
|
||||
this.features = ImmutableList.copyOf(features);
|
||||
this.requiredApps = ImmutableList.copyOf(requiredApps);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -177,4 +186,220 @@ public class DefaultApplicationDescription implements ApplicationDescription {
|
||||
.add("requiredApps", requiredApps)
|
||||
.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a default application description builder.
|
||||
*
|
||||
* @return builder
|
||||
*/
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
|
||||
/**
|
||||
* Default application description builder.
|
||||
*/
|
||||
public static final class Builder {
|
||||
|
||||
private String name;
|
||||
private Version version;
|
||||
private String title;
|
||||
private String description;
|
||||
private String category;
|
||||
private String url;
|
||||
private String readme;
|
||||
private byte[] icon;
|
||||
private String origin;
|
||||
private ApplicationRole role;
|
||||
private Set<Permission> permissions;
|
||||
private URI featuresRepo;
|
||||
private List<String> features;
|
||||
private List<String> requiredApps;
|
||||
|
||||
/**
|
||||
* Default constructor for the builder.
|
||||
*/
|
||||
public Builder() {}
|
||||
|
||||
/**
|
||||
* Adds an application id.
|
||||
*
|
||||
* @param name application name
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withName(String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a version string.
|
||||
*
|
||||
* @param version version string
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withVersion(Version version) {
|
||||
this.version = version;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a title string.
|
||||
*
|
||||
* @param title title string
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withTitle(String title) {
|
||||
this.title = title;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a description string.
|
||||
*
|
||||
* @param description description string
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withDescription(String description) {
|
||||
this.description = description;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a category string.
|
||||
*
|
||||
* @param category category string
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withCategory(String category) {
|
||||
this.category = category;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a URL string.
|
||||
*
|
||||
* @param url url string
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withUrl(String url) {
|
||||
this.url = url;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a readme string.
|
||||
*
|
||||
* @param readme readme string
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withReadme(String readme) {
|
||||
this.readme = readme;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an icon.
|
||||
*
|
||||
* @param icon icon data
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withIcon(byte[] icon) {
|
||||
this.icon = icon;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an origin string.
|
||||
*
|
||||
* @param origin origin string
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withOrigin(String origin) {
|
||||
this.origin = origin;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an application role.
|
||||
*
|
||||
* @param role application role
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withRole(ApplicationRole role) {
|
||||
this.role = role;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a permissions set.
|
||||
*
|
||||
* @param permissions permissions set
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withPermissions(Set<Permission> permissions) {
|
||||
this.permissions = permissions;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a URI for a features repository.
|
||||
*
|
||||
* @param featuresRepo Optional URI for a features repository
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withFeaturesRepo(URI featuresRepo) {
|
||||
this.featuresRepo = featuresRepo;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a features list.
|
||||
*
|
||||
* @param features features list
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withFeatures(List<String> features) {
|
||||
this.features = features;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a list of required applications.
|
||||
*
|
||||
* @param requiredApps List of name strings of required applications
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withRequiredApps(List<String> requiredApps) {
|
||||
this.requiredApps = requiredApps;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds a default application object from the gathered parameters.
|
||||
*
|
||||
* @return new default application
|
||||
*/
|
||||
public DefaultApplicationDescription build() {
|
||||
checkNotNull(name, "Name cannot be null");
|
||||
checkNotNull(version, "Version cannot be null");
|
||||
checkNotNull(title, "Title cannot be null");
|
||||
checkNotNull(description, "Description cannot be null");
|
||||
checkNotNull(origin, "Origin cannot be null");
|
||||
checkNotNull(category, "Category cannot be null");
|
||||
checkNotNull(readme, "Readme cannot be null");
|
||||
checkNotNull(role, "Role cannot be null");
|
||||
checkNotNull(permissions, "Permissions cannot be null");
|
||||
checkNotNull(features, "Features cannot be null");
|
||||
checkNotNull(requiredApps, "Required apps cannot be null");
|
||||
checkArgument(!features.isEmpty(), "There must be at least one feature");
|
||||
|
||||
return new DefaultApplicationDescription(name, version, title,
|
||||
description, origin, category,
|
||||
url, readme, icon,
|
||||
role, permissions,
|
||||
featuresRepo, features,
|
||||
requiredApps);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,6 +17,8 @@ package org.onosproject.core;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
|
||||
import org.onosproject.app.ApplicationDescription;
|
||||
import org.onosproject.security.Permission;
|
||||
|
||||
import java.net.URI;
|
||||
@ -32,7 +34,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
|
||||
/**
|
||||
* Default implementation of network control/management application descriptor.
|
||||
*/
|
||||
public class DefaultApplication implements Application {
|
||||
public final class DefaultApplication implements Application {
|
||||
|
||||
private final ApplicationId appId;
|
||||
private final Version version;
|
||||
@ -49,6 +51,14 @@ public class DefaultApplication implements Application {
|
||||
private final List<String> features;
|
||||
private final List<String> requiredApps;
|
||||
|
||||
/**
|
||||
* Default constructor is hidden to prevent calls to new.
|
||||
*/
|
||||
private DefaultApplication() {
|
||||
// should never happen
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new application descriptor using the supplied data.
|
||||
*
|
||||
@ -67,33 +77,26 @@ public class DefaultApplication implements Application {
|
||||
* @param features application features
|
||||
* @param requiredApps list of required application names
|
||||
*/
|
||||
public DefaultApplication(ApplicationId appId, Version version, String title,
|
||||
private DefaultApplication(ApplicationId appId, Version version, String title,
|
||||
String description, String origin, String category,
|
||||
String url, String readme, byte[] icon,
|
||||
ApplicationRole role, Set<Permission> permissions,
|
||||
Optional<URI> featuresRepo, List<String> features,
|
||||
List<String> requiredApps) {
|
||||
this.appId = checkNotNull(appId, "ID cannot be null");
|
||||
this.version = checkNotNull(version, "Version cannot be null");
|
||||
this.title = checkNotNull(title, "Title cannot be null");
|
||||
this.description = checkNotNull(description, "Description cannot be null");
|
||||
this.origin = checkNotNull(origin, "Origin cannot be null");
|
||||
this.category = checkNotNull(category, "Category cannot be null");
|
||||
this.appId = appId;
|
||||
this.version = version;
|
||||
this.title = title;
|
||||
this.description = description;
|
||||
this.origin = origin;
|
||||
this.category = category;
|
||||
this.url = url;
|
||||
this.readme = checkNotNull(readme, "Readme cannot be null");
|
||||
this.readme = readme;
|
||||
this.icon = icon == null ? new byte[0] : icon.clone();
|
||||
this.role = checkNotNull(role, "Role cannot be null");
|
||||
this.permissions = ImmutableSet.copyOf(
|
||||
checkNotNull(permissions, "Permissions cannot be null")
|
||||
);
|
||||
this.featuresRepo = checkNotNull(featuresRepo, "Features repo cannot be null");
|
||||
this.features = ImmutableList.copyOf(
|
||||
checkNotNull(features, "Features cannot be null")
|
||||
);
|
||||
this.requiredApps = ImmutableList.copyOf(
|
||||
checkNotNull(requiredApps, "Required apps cannot be null")
|
||||
);
|
||||
checkArgument(!features.isEmpty(), "There must be at least one feature");
|
||||
this.role = role;
|
||||
this.permissions = ImmutableSet.copyOf(permissions);
|
||||
this.featuresRepo = featuresRepo;
|
||||
this.features = ImmutableList.copyOf(features);
|
||||
this.requiredApps = ImmutableList.copyOf(requiredApps);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -217,4 +220,317 @@ public class DefaultApplication implements Application {
|
||||
.add("requiredApps", requiredApps)
|
||||
.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a default application builder.
|
||||
*
|
||||
* @return builder
|
||||
*/
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new builder as a copy of an existing builder.
|
||||
*
|
||||
* @param builder existing builder to copy
|
||||
* @return new builder
|
||||
*/
|
||||
public static Builder builder(Builder builder) {
|
||||
return new Builder(builder);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new builder as a copy of an existing application.
|
||||
*
|
||||
* @param application existing application to copy
|
||||
* @return new builder
|
||||
*/
|
||||
public static Builder builder(Application application) {
|
||||
return new Builder(application);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new builder as a copy of an existing application description.
|
||||
*
|
||||
* @param appDesc existing application description
|
||||
* @return new builder
|
||||
*/
|
||||
public static Builder builder(ApplicationDescription appDesc) {
|
||||
return new Builder(appDesc);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Default application builder.
|
||||
*/
|
||||
public static final class Builder {
|
||||
|
||||
private ApplicationId appId;
|
||||
private Version version;
|
||||
private String title;
|
||||
private String description;
|
||||
private String category;
|
||||
private String url;
|
||||
private String readme;
|
||||
private byte[] icon;
|
||||
private String origin;
|
||||
private ApplicationRole role;
|
||||
private Set<Permission> permissions;
|
||||
private Optional<URI> featuresRepo;
|
||||
private List<String> features;
|
||||
private List<String> requiredApps;
|
||||
|
||||
/**
|
||||
* Default constructor for the builder.
|
||||
*/
|
||||
public Builder() {}
|
||||
|
||||
/**
|
||||
* Updates the builder to be a copy of an existing builder.
|
||||
*
|
||||
* @param builder existing builder to copy
|
||||
*/
|
||||
public Builder(Builder builder) {
|
||||
this.appId = builder.appId;
|
||||
this.version = builder.version;
|
||||
this.title = builder.title;
|
||||
this.description = builder.description;
|
||||
this.category = builder.category;
|
||||
this.url = builder.url;
|
||||
this.readme = builder.readme;
|
||||
this.icon = builder.icon;
|
||||
this.origin = builder.origin;
|
||||
this.role = builder.role;
|
||||
this.permissions = builder.permissions;
|
||||
this.featuresRepo = builder.featuresRepo;
|
||||
this.features = builder.features;
|
||||
this.requiredApps = builder.requiredApps;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the builder to be a copy of an existing application.
|
||||
*
|
||||
* @param application existing application to copy
|
||||
*/
|
||||
public Builder(Application application) {
|
||||
this.appId = application.id();
|
||||
this.version = application.version();
|
||||
this.title = application.title();
|
||||
this.description = application.description();
|
||||
this.category = application.category();
|
||||
this.url = application.url();
|
||||
this.readme = application.readme();
|
||||
this.icon = application.icon();
|
||||
this.origin = application.origin();
|
||||
this.role = application.role();
|
||||
this.permissions = application.permissions();
|
||||
this.featuresRepo = application.featuresRepo();
|
||||
this.features = application.features();
|
||||
this.requiredApps = application.requiredApps();
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the builder to be a copy of an existing application description.
|
||||
*
|
||||
* @param appDesc existing application description
|
||||
*/
|
||||
public Builder(ApplicationDescription appDesc) {
|
||||
this.version = appDesc.version();
|
||||
this.title = appDesc.title();
|
||||
this.description = appDesc.description();
|
||||
this.category = appDesc.category();
|
||||
this.url = appDesc.url();
|
||||
this.readme = appDesc.readme();
|
||||
this.icon = appDesc.icon();
|
||||
this.origin = appDesc.origin();
|
||||
this.role = appDesc.role();
|
||||
this.permissions = appDesc.permissions();
|
||||
this.featuresRepo = appDesc.featuresRepo();
|
||||
this.features = appDesc.features();
|
||||
this.requiredApps = appDesc.requiredApps();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an application id.
|
||||
*
|
||||
* @param appId application id
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withAppId(ApplicationId appId) {
|
||||
this.appId = appId;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a version string.
|
||||
*
|
||||
* @param version version string
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withVersion(Version version) {
|
||||
this.version = version;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a title string.
|
||||
*
|
||||
* @param title title string
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withTitle(String title) {
|
||||
this.title = title;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a description string.
|
||||
*
|
||||
* @param description description string
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withDescription(String description) {
|
||||
this.description = description;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a category string.
|
||||
*
|
||||
* @param category category string
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withCategory(String category) {
|
||||
this.category = category;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a URL string.
|
||||
*
|
||||
* @param url url string
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withUrl(String url) {
|
||||
this.url = url;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a readme string.
|
||||
*
|
||||
* @param readme readme string
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withReadme(String readme) {
|
||||
this.readme = readme;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an icon.
|
||||
*
|
||||
* @param icon icon data
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withIcon(byte[] icon) {
|
||||
this.icon = icon;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an origin string.
|
||||
*
|
||||
* @param origin origin string
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withOrigin(String origin) {
|
||||
this.origin = origin;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an application role.
|
||||
*
|
||||
* @param role application role
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withRole(ApplicationRole role) {
|
||||
this.role = role;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a permissions set.
|
||||
*
|
||||
* @param permissions permissions set
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withPermissions(Set<Permission> permissions) {
|
||||
this.permissions = permissions;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a URI for a features repository.
|
||||
*
|
||||
* @param featuresRepo Optional URI for a features repository
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withFeaturesRepo(Optional<URI> featuresRepo) {
|
||||
this.featuresRepo = featuresRepo;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a features list.
|
||||
*
|
||||
* @param features features list
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withFeatures(List<String> features) {
|
||||
this.features = features;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a list of required applications.
|
||||
*
|
||||
* @param requiredApps List of name strings of required applications
|
||||
* @return builder
|
||||
*/
|
||||
public Builder withRequiredApps(List<String> requiredApps) {
|
||||
this.requiredApps = requiredApps;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds a default application object from the gathered parameters.
|
||||
*
|
||||
* @return new default application
|
||||
*/
|
||||
public DefaultApplication build() {
|
||||
checkNotNull(appId, "ID cannot be null");
|
||||
checkNotNull(version, "Version cannot be null");
|
||||
checkNotNull(title, "Title cannot be null");
|
||||
checkNotNull(description, "Description cannot be null");
|
||||
checkNotNull(origin, "Origin cannot be null");
|
||||
checkNotNull(category, "Category cannot be null");
|
||||
checkNotNull(readme, "Readme cannot be null");
|
||||
checkNotNull(role, "Role cannot be null");
|
||||
checkNotNull(permissions, "Permissions cannot be null");
|
||||
checkNotNull(featuresRepo, "Features repo cannot be null");
|
||||
checkNotNull(features, "Features cannot be null");
|
||||
checkNotNull(requiredApps, "Required apps cannot be null");
|
||||
checkArgument(!features.isEmpty(), "There must be at least one feature");
|
||||
|
||||
return new DefaultApplication(appId, version, title,
|
||||
description, origin, category,
|
||||
url, readme, icon,
|
||||
role, permissions,
|
||||
featuresRepo, features,
|
||||
requiredApps);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,9 +32,22 @@ import static org.onosproject.core.DefaultApplicationTest.APP_ID;
|
||||
public class ApplicationEventTest extends AbstractEventTest {
|
||||
|
||||
private Application createApp() {
|
||||
return new DefaultApplication(APP_ID, VER, TITLE, DESC, ORIGIN, CATEGORY,
|
||||
URL, README, ICON, ROLE, PERMS,
|
||||
Optional.of(FURL), FEATURES, APPS);
|
||||
return DefaultApplication.builder()
|
||||
.withAppId(APP_ID)
|
||||
.withVersion(VER)
|
||||
.withTitle(TITLE)
|
||||
.withDescription(DESC)
|
||||
.withOrigin(ORIGIN)
|
||||
.withCategory(CATEGORY)
|
||||
.withUrl(URL)
|
||||
.withReadme(README)
|
||||
.withIcon(ICON)
|
||||
.withRole(ROLE)
|
||||
.withPermissions(PERMS)
|
||||
.withFeaturesRepo(Optional.of(FURL))
|
||||
.withFeatures(FEATURES)
|
||||
.withRequiredApps(APPS)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -53,4 +66,4 @@ public class ApplicationEventTest extends AbstractEventTest {
|
||||
validateEvent(event, APP_ACTIVATED, app, before, after);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -29,6 +29,7 @@ import java.util.Set;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
|
||||
|
||||
|
||||
/**
|
||||
@ -53,12 +54,34 @@ public class DefaultApplicationDescriptionTest {
|
||||
public static final List<String> FEATURES = ImmutableList.of("foo", "bar");
|
||||
public static final List<String> APPS = ImmutableList.of("fifi");
|
||||
|
||||
/**
|
||||
* Checks that the DefaultApplicationDescription class is immutable.
|
||||
*/
|
||||
@Test
|
||||
public void testImmutability() {
|
||||
assertThatClassIsImmutable(DefaultApplicationDescription.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void basics() {
|
||||
ApplicationDescription app =
|
||||
new DefaultApplicationDescription(APP_NAME, VER, TITLE, DESC, ORIGIN,
|
||||
CATEGORY, URL, README, ICON,
|
||||
ROLE, PERMS, FURL, FEATURES, APPS);
|
||||
DefaultApplicationDescription.builder()
|
||||
.withName(APP_NAME)
|
||||
.withVersion(VER)
|
||||
.withTitle(TITLE)
|
||||
.withDescription(DESC)
|
||||
.withOrigin(ORIGIN)
|
||||
.withCategory(CATEGORY)
|
||||
.withUrl(URL)
|
||||
.withReadme(README)
|
||||
.withIcon(ICON)
|
||||
.withRole(ROLE)
|
||||
.withPermissions(PERMS)
|
||||
.withFeaturesRepo(FURL)
|
||||
.withFeatures(FEATURES)
|
||||
.withRequiredApps(APPS)
|
||||
.build();
|
||||
|
||||
assertEquals("incorrect id", APP_NAME, app.name());
|
||||
assertEquals("incorrect version", VER, app.version());
|
||||
assertEquals("incorrect title", TITLE, app.title());
|
||||
@ -74,4 +97,4 @@ public class DefaultApplicationDescriptionTest {
|
||||
assertEquals("incorrect apps", APPS, app.requiredApps());
|
||||
assertTrue("incorrect toString", app.toString().contains(APP_NAME));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -28,6 +28,9 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
|
||||
import static org.onosproject.core.DefaultApplication.Builder;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.onosproject.app.DefaultApplicationDescriptionTest.*;
|
||||
|
||||
@ -36,13 +39,35 @@ import static org.onosproject.app.DefaultApplicationDescriptionTest.*;
|
||||
*/
|
||||
public class DefaultApplicationTest {
|
||||
|
||||
/**
|
||||
* Checks that the DefaultApplication class is immutable.
|
||||
*/
|
||||
@Test
|
||||
public void testImmutability() {
|
||||
assertThatClassIsImmutable(DefaultApplication.class);
|
||||
}
|
||||
|
||||
public static final ApplicationId APP_ID = new DefaultApplicationId(2, APP_NAME);
|
||||
private Builder baseBuilder = DefaultApplication.builder()
|
||||
.withAppId(APP_ID)
|
||||
.withVersion(VER)
|
||||
.withTitle(TITLE)
|
||||
.withDescription(DESC)
|
||||
.withOrigin(ORIGIN)
|
||||
.withCategory(CATEGORY)
|
||||
.withUrl(URL)
|
||||
.withReadme(README)
|
||||
.withIcon(ICON)
|
||||
.withRole(ROLE)
|
||||
.withPermissions(PERMS)
|
||||
.withFeaturesRepo(Optional.of(FURL))
|
||||
.withFeatures(FEATURES)
|
||||
.withRequiredApps(APPS);
|
||||
|
||||
@Test
|
||||
public void basics() {
|
||||
Application app = new DefaultApplication(APP_ID, VER, TITLE, DESC, ORIGIN,
|
||||
CATEGORY, URL, README, ICON, ROLE,
|
||||
PERMS, Optional.of(FURL), FEATURES, APPS);
|
||||
Application app = baseBuilder.build();
|
||||
|
||||
assertEquals("incorrect id", APP_ID, app.id());
|
||||
assertEquals("incorrect version", VER, app.version());
|
||||
assertEquals("incorrect title", TITLE, app.title());
|
||||
@ -62,20 +87,20 @@ public class DefaultApplicationTest {
|
||||
|
||||
@Test
|
||||
public void testEquality() {
|
||||
Application a1 = new DefaultApplication(APP_ID, VER, TITLE, DESC, ORIGIN,
|
||||
CATEGORY, URL, README, ICON, ROLE,
|
||||
PERMS, Optional.of(FURL), FEATURES, APPS);
|
||||
Application a2 = new DefaultApplication(APP_ID, VER, TITLE, DESC, ORIGIN,
|
||||
CATEGORY, URL, README, ICON, ROLE,
|
||||
PERMS, Optional.of(FURL), FEATURES, APPS);
|
||||
Application a3 = new DefaultApplication(APP_ID, VER, TITLE, DESC, ORIGIN,
|
||||
CATEGORY, URL, README, ICON, ROLE,
|
||||
PERMS, Optional.empty(), FEATURES, APPS);
|
||||
Application a4 = new DefaultApplication(APP_ID, VER, TITLE, DESC, ORIGIN + "asd",
|
||||
CATEGORY, URL, README, ICON, ROLE,
|
||||
PERMS, Optional.of(FURL), FEATURES, APPS);
|
||||
new EqualsTester().addEqualityGroup(a1, a2)
|
||||
.addEqualityGroup(a3).addEqualityGroup(a4).testEquals();
|
||||
Application a1 = baseBuilder.build();
|
||||
Application a2 = DefaultApplication.builder(a1)
|
||||
.build();
|
||||
Application a3 = DefaultApplication.builder(baseBuilder)
|
||||
.withFeaturesRepo(Optional.empty())
|
||||
.build();
|
||||
Application a4 = DefaultApplication.builder(baseBuilder)
|
||||
.withOrigin(ORIGIN + "asd")
|
||||
.build();
|
||||
new EqualsTester()
|
||||
.addEqualityGroup(a1, a2)
|
||||
.addEqualityGroup(a3)
|
||||
.addEqualityGroup(a4)
|
||||
.testEquals();
|
||||
}
|
||||
|
||||
|
||||
@ -85,9 +110,8 @@ public class DefaultApplicationTest {
|
||||
public void immutableIcon() {
|
||||
byte[] iconSourceData = ICON_ORIG.clone();
|
||||
|
||||
Application app = new DefaultApplication(APP_ID, VER, TITLE, DESC, ORIGIN,
|
||||
CATEGORY, URL, README, iconSourceData, ROLE,
|
||||
PERMS, Optional.of(FURL), FEATURES, APPS);
|
||||
Application app = DefaultApplication.builder(baseBuilder)
|
||||
.withIcon(iconSourceData).build();
|
||||
|
||||
// can we modify the icon after getting a reference to the app?
|
||||
byte[] icon = app.icon();
|
||||
@ -126,9 +150,7 @@ public class DefaultApplicationTest {
|
||||
// Set<Permission> p = PERMS_ORIG;
|
||||
Set<Permission> p = PERMS_UNSAFE;
|
||||
|
||||
Application app = new DefaultApplication(APP_ID, VER, TITLE, DESC, ORIGIN,
|
||||
CATEGORY, URL, README, ICON, ROLE,
|
||||
p, Optional.of(FURL), FEATURES, APPS);
|
||||
Application app = baseBuilder.build();
|
||||
|
||||
Set<Permission> perms = app.permissions();
|
||||
try {
|
||||
@ -168,9 +190,7 @@ public class DefaultApplicationTest {
|
||||
// List<String> f = FEATURES_ORIG;
|
||||
List<String> f = FEATURES_UNSAFE;
|
||||
|
||||
Application app = new DefaultApplication(APP_ID, VER, TITLE, DESC, ORIGIN,
|
||||
CATEGORY, URL, README, ICON, ROLE,
|
||||
PERMS, Optional.of(FURL), f, APPS);
|
||||
Application app = DefaultApplication.builder(baseBuilder).withFeatures(f).build();
|
||||
|
||||
List<String> features = app.features();
|
||||
try {
|
||||
@ -188,9 +208,7 @@ public class DefaultApplicationTest {
|
||||
// List<String> ra = REQ_APPS_ORIG;
|
||||
List<String> ra = REQ_APPS_UNSAFE;
|
||||
|
||||
Application app = new DefaultApplication(APP_ID, VER, TITLE, DESC, ORIGIN,
|
||||
CATEGORY, URL, README, ICON, ROLE,
|
||||
PERMS, Optional.of(FURL), FEATURES, ra);
|
||||
Application app = DefaultApplication.builder(baseBuilder).withRequiredApps(ra).build();
|
||||
|
||||
List<String> reqApps = app.requiredApps();
|
||||
try {
|
||||
@ -204,11 +222,9 @@ public class DefaultApplicationTest {
|
||||
|
||||
@Test
|
||||
public void nullIcon() {
|
||||
Application app = new DefaultApplication(APP_ID, VER, TITLE, DESC, ORIGIN,
|
||||
CATEGORY, URL, README, null, ROLE,
|
||||
PERMS, Optional.of(FURL), FEATURES, APPS);
|
||||
Application app = DefaultApplication.builder(baseBuilder).withIcon(null).build();
|
||||
byte[] icon = app.icon();
|
||||
assertNotNull("null icon", icon);
|
||||
assertEquals("unexpected size", 0, icon.length);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -328,10 +328,22 @@ public class ApplicationArchive
|
||||
// put short description to description field
|
||||
String desc = compactDescription(readme);
|
||||
|
||||
return new DefaultApplicationDescription(name, version, title, desc, origin,
|
||||
category, url, readme, icon,
|
||||
role, perms, featuresRepo,
|
||||
features, requiredApps);
|
||||
return DefaultApplicationDescription.builder()
|
||||
.withName(name)
|
||||
.withVersion(version)
|
||||
.withTitle(title)
|
||||
.withDescription(desc)
|
||||
.withOrigin(origin)
|
||||
.withCategory(category)
|
||||
.withUrl(url)
|
||||
.withReadme(readme)
|
||||
.withIcon(icon)
|
||||
.withRole(role)
|
||||
.withPermissions(perms)
|
||||
.withFeaturesRepo(featuresRepo)
|
||||
.withFeatures(features)
|
||||
.withRequiredApps(requiredApps)
|
||||
.build();
|
||||
}
|
||||
|
||||
// Expands the specified ZIP stream into app-specific directory.
|
||||
|
||||
@ -76,20 +76,11 @@ public class SimpleApplicationStore extends ApplicationArchive
|
||||
ApplicationId appId = idStore.registerApplication(name);
|
||||
ApplicationDescription appDesc = getApplicationDescription(name);
|
||||
DefaultApplication app =
|
||||
new DefaultApplication(appId,
|
||||
appDesc.version(),
|
||||
appDesc.title(),
|
||||
appDesc.description(),
|
||||
appDesc.origin(),
|
||||
appDesc.category(),
|
||||
appDesc.url(),
|
||||
appDesc.readme(),
|
||||
appDesc.icon(),
|
||||
appDesc.role(),
|
||||
appDesc.permissions(),
|
||||
appDesc.featuresRepo(),
|
||||
appDesc.features(),
|
||||
appDesc.requiredApps());
|
||||
DefaultApplication
|
||||
.builder(appDesc)
|
||||
.withAppId(appId)
|
||||
.build();
|
||||
|
||||
apps.put(appId, app);
|
||||
states.put(appId, isActive(name) ? INSTALLED : ACTIVE);
|
||||
// load app permissions
|
||||
@ -129,20 +120,11 @@ public class SimpleApplicationStore extends ApplicationArchive
|
||||
ApplicationDescription appDesc = saveApplication(appDescStream);
|
||||
ApplicationId appId = idStore.registerApplication(appDesc.name());
|
||||
DefaultApplication app =
|
||||
new DefaultApplication(appId,
|
||||
appDesc.version(),
|
||||
appDesc.title(),
|
||||
appDesc.description(),
|
||||
appDesc.origin(),
|
||||
appDesc.category(),
|
||||
appDesc.url(),
|
||||
appDesc.readme(),
|
||||
appDesc.icon(),
|
||||
appDesc.role(),
|
||||
appDesc.permissions(),
|
||||
appDesc.featuresRepo(),
|
||||
appDesc.features(),
|
||||
appDesc.requiredApps());
|
||||
DefaultApplication
|
||||
.builder(appDesc)
|
||||
.withAppId(appId)
|
||||
.build();
|
||||
|
||||
apps.put(appId, app);
|
||||
states.put(appId, INSTALLED);
|
||||
delegate.notify(new ApplicationEvent(APP_INSTALLED, app));
|
||||
|
||||
@ -161,9 +161,22 @@ public class ComparatorsTest {
|
||||
}
|
||||
|
||||
private Application app(int id, String name) {
|
||||
return new DefaultApplication(new DefaultApplicationId(id, name), VER, TITLE, DESC, ORIGIN,
|
||||
CATEGORY, URL, README, ICON, ROLE,
|
||||
PERMS, Optional.of(FURL), FEATURES, APPS);
|
||||
return DefaultApplication.builder()
|
||||
.withAppId(new DefaultApplicationId(id, name))
|
||||
.withVersion(VER)
|
||||
.withTitle(TITLE)
|
||||
.withDescription(DESC)
|
||||
.withOrigin(ORIGIN)
|
||||
.withCategory(CATEGORY)
|
||||
.withUrl(URL)
|
||||
.withReadme(README)
|
||||
.withIcon(ICON)
|
||||
.withRole(ROLE)
|
||||
.withPermissions(PERMS)
|
||||
.withFeaturesRepo(Optional.of(FURL))
|
||||
.withFeatures(FEATURES)
|
||||
.withRequiredApps(APPS)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@ -15,7 +15,6 @@
|
||||
*/
|
||||
package org.onosproject.app.impl;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
@ -138,9 +137,22 @@ public class ApplicationManagerTest {
|
||||
|
||||
@Override
|
||||
public Application create(InputStream appDescStream) {
|
||||
app = new DefaultApplication(APP_ID, VER, TITLE, DESC, ORIGIN, CATEGORY,
|
||||
URL, README, ICON, ROLE, PERMS,
|
||||
Optional.of(FURL), FEATURES, ImmutableList.of());
|
||||
app = DefaultApplication.builder()
|
||||
.withAppId(APP_ID)
|
||||
.withVersion(VER)
|
||||
.withTitle(TITLE)
|
||||
.withDescription(DESC)
|
||||
.withOrigin(ORIGIN)
|
||||
.withCategory(CATEGORY)
|
||||
.withUrl(URL)
|
||||
.withReadme(README)
|
||||
.withIcon(ICON)
|
||||
.withRole(ROLE)
|
||||
.withPermissions(PERMS)
|
||||
.withFeaturesRepo(Optional.of(FURL))
|
||||
.withFeatures(FEATURES)
|
||||
.withRequiredApps(APPS)
|
||||
.build();
|
||||
state = INSTALLED;
|
||||
delegate.notify(new ApplicationEvent(APP_INSTALLED, app));
|
||||
return app;
|
||||
@ -211,4 +223,4 @@ public class ApplicationManagerTest {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -69,11 +69,22 @@ public class SecurityModeManagerTest {
|
||||
testFeatures.add("testFeature");
|
||||
testRequiredApps = new ArrayList<String>();
|
||||
testRequiredApps.add("testRequiredApp");
|
||||
app = new DefaultApplication(appId, Version.version(1, 1, "patch", "build"), "testTitle",
|
||||
"testDes", "testOri", "testCT",
|
||||
"testurl", "test", null,
|
||||
ApplicationRole.ADMIN, testPermissions,
|
||||
Optional.ofNullable(null), testFeatures, testRequiredApps);
|
||||
app = DefaultApplication.builder()
|
||||
.withAppId(appId)
|
||||
.withVersion(Version.version(1, 1, "patch", "build"))
|
||||
.withTitle("testTitle")
|
||||
.withDescription("testDes")
|
||||
.withOrigin("testOri")
|
||||
.withCategory("testCT")
|
||||
.withUrl("testurl")
|
||||
.withReadme("test")
|
||||
.withIcon(null)
|
||||
.withRole(ApplicationRole.ADMIN)
|
||||
.withPermissions(testPermissions)
|
||||
.withFeaturesRepo(Optional.ofNullable(null))
|
||||
.withFeatures(testFeatures)
|
||||
.withRequiredApps(testRequiredApps)
|
||||
.build();
|
||||
|
||||
store.registerApplication(appId);
|
||||
}
|
||||
|
||||
@ -79,11 +79,22 @@ public class DistributedSecurityModeStoreTest {
|
||||
testFeatures.add("testFeature");
|
||||
testRequiredApps = new ArrayList<String>();
|
||||
testRequiredApps.add("testRequiredApp");
|
||||
app = new DefaultApplication(appId, Version.version(1, 1, "patch", "build"), "testTitle",
|
||||
"testDes", "testOri", "testCT",
|
||||
"testurl", "test", null,
|
||||
ApplicationRole.ADMIN, testPermissions,
|
||||
Optional.ofNullable(null), testFeatures, testRequiredApps);
|
||||
app = DefaultApplication.builder()
|
||||
.withAppId(appId)
|
||||
.withVersion(Version.version(1, 1, "patch", "build"))
|
||||
.withTitle("testTitle")
|
||||
.withDescription("testDes")
|
||||
.withOrigin("testOri")
|
||||
.withCategory("testCT")
|
||||
.withUrl("testurl")
|
||||
.withReadme("test")
|
||||
.withIcon(null)
|
||||
.withRole(ApplicationRole.ADMIN)
|
||||
.withPermissions(testPermissions)
|
||||
.withFeaturesRepo(Optional.ofNullable(null))
|
||||
.withFeatures(testFeatures)
|
||||
.withRequiredApps(testRequiredApps)
|
||||
.build();
|
||||
|
||||
testLocations = new HashSet<String>();
|
||||
testLocations.add("locationA");
|
||||
|
||||
@ -571,20 +571,10 @@ public class DistributedApplicationStore extends ApplicationArchive
|
||||
*/
|
||||
private Application registerApp(ApplicationDescription appDesc) {
|
||||
ApplicationId appId = idStore.registerApplication(appDesc.name());
|
||||
return new DefaultApplication(appId,
|
||||
appDesc.version(),
|
||||
appDesc.title(),
|
||||
appDesc.description(),
|
||||
appDesc.origin(),
|
||||
appDesc.category(),
|
||||
appDesc.url(),
|
||||
appDesc.readme(),
|
||||
appDesc.icon(),
|
||||
appDesc.role(),
|
||||
appDesc.permissions(),
|
||||
appDesc.featuresRepo(),
|
||||
appDesc.features(),
|
||||
appDesc.requiredApps());
|
||||
return DefaultApplication
|
||||
.builder(appDesc)
|
||||
.withAppId(appId)
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -23,7 +23,6 @@ import org.onosproject.grpc.core.models.ApplicationProtoOuterClass.ApplicationPr
|
||||
import org.onosproject.incubator.protobuf.models.security.PermissionProtoTranslator;
|
||||
import org.onosproject.security.Permission;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.onosproject.grpc.core.models.ApplicationProtoOuterClass.ApplicationProto.getDefaultInstance;
|
||||
@ -46,12 +45,21 @@ public final class ApplicationProtoTranslator {
|
||||
app.getPermissionsList().forEach(p ->
|
||||
permissions.add(PermissionProtoTranslator.translate(p)));
|
||||
|
||||
return new DefaultApplication(ApplicationIdProtoTranslator.translate(app.getAppId()),
|
||||
VersionProtoTranslator.translate(app.getVersion()), app.getTitle(),
|
||||
app.getDescription(), app.getOrigin(), app.getCategory(), app.getUrl(),
|
||||
app.getReadme(), app.toByteArray(),
|
||||
(ApplicationRole) ApplicationEnumsProtoTranslator.translate(app.getRole()).get(),
|
||||
permissions, Optional.empty(), app.getFeaturesList(), app.getRequiredAppsList());
|
||||
return DefaultApplication.builder()
|
||||
.withAppId(ApplicationIdProtoTranslator.translate(app.getAppId()))
|
||||
.withVersion(VersionProtoTranslator.translate(app.getVersion()))
|
||||
.withTitle(app.getTitle())
|
||||
.withDescription(app.getDescription())
|
||||
.withOrigin(app.getOrigin())
|
||||
.withCategory(app.getCategory())
|
||||
.withUrl(app.getUrl())
|
||||
.withReadme(app.getReadme())
|
||||
.withIcon(app.toByteArray())
|
||||
.withRole((ApplicationRole) ApplicationEnumsProtoTranslator.translate(app.getRole()).get())
|
||||
.withPermissions(permissions)
|
||||
.withFeatures(app.getFeaturesList())
|
||||
.withRequiredApps(app.getRequiredAppsList())
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -107,30 +107,55 @@ public class ApplicationsResourceTest extends ResourceTest {
|
||||
private static final URI FURL = URI.create("mvn:org.foo-features/1.2a/xml/features");
|
||||
private static final Version VER = Version.version(1, 2, "a", null);
|
||||
|
||||
private DefaultApplication.Builder baseBuilder = DefaultApplication.builder()
|
||||
.withVersion(VER)
|
||||
.withIcon(new byte[0])
|
||||
.withRole(ApplicationRole.ADMIN)
|
||||
.withPermissions(ImmutableSet.of())
|
||||
.withFeaturesRepo(Optional.of(FURL))
|
||||
.withFeatures(ImmutableList.of("My Feature"))
|
||||
.withRequiredApps(ImmutableList.of());
|
||||
|
||||
private Application app1 =
|
||||
new DefaultApplication(id1, VER, "title1",
|
||||
"desc1", "origin1", "category1", "url1",
|
||||
"readme1", new byte[0], ApplicationRole.ADMIN,
|
||||
ImmutableSet.of(), Optional.of(FURL),
|
||||
ImmutableList.of("My Feature"), ImmutableList.of());
|
||||
DefaultApplication.builder(baseBuilder)
|
||||
.withAppId(id1)
|
||||
.withTitle("title1")
|
||||
.withDescription("desc1")
|
||||
.withOrigin("origin1")
|
||||
.withCategory("category1")
|
||||
.withUrl("url1")
|
||||
.withReadme("readme1")
|
||||
.build();
|
||||
private Application app2 =
|
||||
new DefaultApplication(id2, VER, "title2",
|
||||
"desc2", "origin2", "category2", "url2",
|
||||
"readme2", new byte[0], ApplicationRole.ADMIN,
|
||||
ImmutableSet.of(), Optional.of(FURL),
|
||||
ImmutableList.of("My Feature"), ImmutableList.of());
|
||||
DefaultApplication.builder(baseBuilder)
|
||||
.withAppId(id2)
|
||||
.withTitle("title2")
|
||||
.withDescription("desc2")
|
||||
.withOrigin("origin2")
|
||||
.withCategory("category2")
|
||||
.withUrl("url2")
|
||||
.withReadme("readme2")
|
||||
.build();
|
||||
private Application app3 =
|
||||
new DefaultApplication(id3, VER, "title3",
|
||||
"desc3", "origin3", "category3", "url3",
|
||||
"readme3", new byte[0], ApplicationRole.ADMIN,
|
||||
ImmutableSet.of(), Optional.of(FURL),
|
||||
ImmutableList.of("My Feature"), ImmutableList.of());
|
||||
DefaultApplication.builder(baseBuilder)
|
||||
.withAppId(id3)
|
||||
.withTitle("title3")
|
||||
.withDescription("desc3")
|
||||
.withOrigin("origin3")
|
||||
.withCategory("category3")
|
||||
.withUrl("url3")
|
||||
.withReadme("readme3")
|
||||
.build();
|
||||
private Application app4 =
|
||||
new DefaultApplication(id4, VER, "title4",
|
||||
"desc4", "origin4", "category4", "url4",
|
||||
"readme4", new byte[0], ApplicationRole.ADMIN,
|
||||
ImmutableSet.of(), Optional.of(FURL),
|
||||
ImmutableList.of("My Feature"), ImmutableList.of());
|
||||
DefaultApplication.builder(baseBuilder)
|
||||
.withAppId(id4)
|
||||
.withTitle("title4")
|
||||
.withDescription("desc4")
|
||||
.withOrigin("origin4")
|
||||
.withCategory("category4")
|
||||
.withUrl("url4")
|
||||
.withReadme("readme4")
|
||||
.build();
|
||||
|
||||
/**
|
||||
* Hamcrest matcher to check that an application representation in JSON matches
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user