[ONOS-3634] Provide default category name and make url nullable

Change-Id: Id6d0404cc1e46cdd4f54f2ff64ca69313bec9281
diff --git a/core/api/src/main/java/org/onosproject/app/DefaultApplicationDescription.java b/core/api/src/main/java/org/onosproject/app/DefaultApplicationDescription.java
index 40f1d76..3aaca4c 100644
--- a/core/api/src/main/java/org/onosproject/app/DefaultApplicationDescription.java
+++ b/core/api/src/main/java/org/onosproject/app/DefaultApplicationDescription.java
@@ -75,7 +75,7 @@
         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.url = checkNotNull(url, "URL cannot be null");
+        this.url = url;
         this.readme = checkNotNull(readme, "Readme cannot be null");
         this.icon = icon;
         this.role = checkNotNull(role, "Role cannot be null");
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 e22d14f..5ce5ee7 100644
--- a/core/api/src/main/java/org/onosproject/core/DefaultApplication.java
+++ b/core/api/src/main/java/org/onosproject/core/DefaultApplication.java
@@ -74,7 +74,7 @@
         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.url = checkNotNull(url, "URL cannot be null");
+        this.url = url;
         this.readme = checkNotNull(readme, "Readme cannot be null");
         this.icon = icon;
         this.role = checkNotNull(role, "Role cannot be null");
diff --git a/core/common/src/main/java/org/onosproject/common/app/ApplicationArchive.java b/core/common/src/main/java/org/onosproject/common/app/ApplicationArchive.java
index 6d7dc31..ba55097 100644
--- a/core/common/src/main/java/org/onosproject/common/app/ApplicationArchive.java
+++ b/core/common/src/main/java/org/onosproject/common/app/ApplicationArchive.java
@@ -86,6 +86,8 @@
     private static final String APPS = "[@apps]";
     private static final String DESCRIPTION = "description";
 
+    private static final String UTILITY = "utility";
+
     private static final String CATEGORY = "[@category]";
     private static final String URL = "[@url]";
 
@@ -293,7 +295,7 @@
         String name = cfg.getString(NAME);
         Version version = Version.version(cfg.getString(VERSION));
         String origin = cfg.getString(ORIGIN);
-        String category = cfg.getString(CATEGORY);
+        String category = cfg.getString(CATEGORY, UTILITY);
         String url = cfg.getString(URL);
         byte[] icon = getApplicationIcon(name);
         ApplicationRole role = getRole(cfg.getString(ROLE));