Corrections to getRegisteredApplications and CLI implementation
Change-Id: Ia24997b9fcb5d658592f11f710c0b4e8eb40309a
diff --git a/core/api/src/main/java/org/onosproject/core/Application.java b/core/api/src/main/java/org/onosproject/core/Application.java
index b898cb6..84279dc 100644
--- a/core/api/src/main/java/org/onosproject/core/Application.java
+++ b/core/api/src/main/java/org/onosproject/core/Application.java
@@ -21,6 +21,7 @@
import java.util.List;
import java.util.Optional;
import java.util.Set;
+import java.net.URL;
/**
* Abstraction of a network control/management application.
@@ -132,4 +133,11 @@
* @return list of application names
*/
List<String> requiredApps();
-}
+
+ /**
+ * Returns binary image URL.
+ *
+ * @return URL of binary image
+ */
+ URL imageUrl();
+}
\ No newline at end of file
diff --git a/core/api/src/main/java/org/onosproject/core/DefaultApplication.java b/core/api/src/main/java/org/onosproject/core/DefaultApplication.java
index 2df2f8f..793ab70 100644
--- a/core/api/src/main/java/org/onosproject/core/DefaultApplication.java
+++ b/core/api/src/main/java/org/onosproject/core/DefaultApplication.java
@@ -26,6 +26,7 @@
import java.util.Optional;
import java.util.List;
import java.util.Objects;
+import java.net.URL;
import static com.google.common.base.MoreObjects.toStringHelper;
import static com.google.common.base.Preconditions.checkArgument;
@@ -50,7 +51,7 @@
private final Optional<URI> featuresRepo;
private final List<String> features;
private final List<String> requiredApps;
-
+ private final URL imageUrl;
/**
* Default constructor is hidden to prevent calls to new.
*/
@@ -69,6 +70,7 @@
featuresRepo = Optional.empty();
features = ImmutableList.of();
requiredApps = ImmutableList.of();
+ imageUrl = null;
}
/**
@@ -88,13 +90,14 @@
* @param featuresRepo optional features repo URI
* @param features application features
* @param requiredApps list of required application names
+ * @param imageUrl url of oar file
*/
- private DefaultApplication(ApplicationId appId, Version version, String title,
+ public 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) {
+ List<String> requiredApps, URL imageUrl) {
this.appId = appId;
this.version = version;
this.title = title;
@@ -109,8 +112,8 @@
this.featuresRepo = featuresRepo;
this.features = ImmutableList.copyOf(features);
this.requiredApps = ImmutableList.copyOf(requiredApps);
+ this.imageUrl = imageUrl;
}
-
@Override
public ApplicationId id() {
return appId;
@@ -182,6 +185,11 @@
}
@Override
+ public URL imageUrl() {
+ return imageUrl;
+ }
+
+ @Override
public int hashCode() {
return Objects.hash(appId, version, title, description, origin, category, url,
readme, role, permissions, featuresRepo, features, requiredApps);
@@ -230,6 +238,7 @@
.add("featuresRepo", featuresRepo)
.add("features", features)
.add("requiredApps", requiredApps)
+ .add("imageURL", imageUrl)
.toString();
}
@@ -277,7 +286,6 @@
* Default application builder.
*/
public static final class Builder {
-
private ApplicationId appId;
private Version version;
private String title;
@@ -285,13 +293,14 @@
private String category;
private String url;
private String readme;
- private byte[] icon;
+ private byte[] icon = new byte[0];
private String origin;
- private ApplicationRole role;
- private Set<Permission> permissions;
- private Optional<URI> featuresRepo;
- private List<String> features;
- private List<String> requiredApps;
+ private ApplicationRole role = ApplicationRole.ADMIN;
+ private Set<Permission> permissions = ImmutableSet.of();
+ private Optional<URI> featuresRepo = Optional.empty();
+ private List<String> features = ImmutableList.of();
+ private List<String> requiredApps = ImmutableList.of();
+ private URL imageUrl;
/**
* Default constructor for the builder.
@@ -518,6 +527,17 @@
}
/**
+ * Adds a Binary Image URL.
+ *
+ * @param imageUrl url of oar file
+ * @return builder
+ */
+ public Builder withImageUrl(URL imageUrl) {
+ this.imageUrl = imageUrl;
+ return this;
+ }
+
+ /**
* Builds a default application object from the gathered parameters.
*
* @return new default application
@@ -542,7 +562,7 @@
url, readme, icon,
role, permissions,
featuresRepo, features,
- requiredApps);
+ requiredApps, imageUrl);
}
}
-}
+}
\ No newline at end of file
diff --git a/core/api/src/test/java/org/onosproject/core/DefaultApplicationTest.java b/core/api/src/test/java/org/onosproject/core/DefaultApplicationTest.java
index b523126..98dccec 100644
--- a/core/api/src/test/java/org/onosproject/core/DefaultApplicationTest.java
+++ b/core/api/src/test/java/org/onosproject/core/DefaultApplicationTest.java
@@ -49,20 +49,20 @@
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);
+ .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() {
@@ -77,8 +77,8 @@
assertEquals("incorrect URL", URL, app.url());
assertEquals("incorrect readme", README, app.readme());
assertArrayEquals("incorrect icon", ICON, app.icon());
- assertEquals("incorrect role", ROLE, app.role());
assertEquals("incorrect permissions", PERMS, app.permissions());
+ assertEquals("incorrect role", ROLE, app.role());
assertEquals("incorrect features repo", FURL, app.featuresRepo().get());
assertEquals("incorrect features", FEATURES, app.features());
assertEquals("incorrect apps", APPS, app.requiredApps());
@@ -88,7 +88,7 @@
@Test
public void testEquality() {
Application a1 = baseBuilder.build();
- Application a2 = DefaultApplication.builder(a1)
+ Application a2 = DefaultApplication.builder(a1)
.build();
Application a3 = DefaultApplication.builder(baseBuilder)
.withFeaturesRepo(Optional.empty())
@@ -227,4 +227,4 @@
assertNotNull("null icon", icon);
assertEquals("unexpected size", 0, icon.length);
}
-}
+}
\ No newline at end of file