[rygel] core,plugins: Correctly handle wildcard in search



commit 4d90a401c71ef08d22ec88b11c24a4304cd0001b
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date:   Wed Aug 4 18:07:09 2010 +0300

    core,plugins: Correctly handle wildcard in search

 src/plugins/external/rygel-external-container.vala |   14 +++++++-------
 .../rygel-media-export-db-container.vala           |   17 ++++++++++++-----
 .../rygel-media-export-query-container.vala        |   18 +++++++++++++-----
 .../rygel-media-export-root-container.vala         |   18 +++++++++++++-----
 .../tracker/rygel-tracker-search-container.vala    |   16 ++++++++--------
 src/rygel/rygel-media-container.vala               |   10 +++++-----
 6 files changed, 58 insertions(+), 35 deletions(-)
---
diff --git a/src/plugins/external/rygel-external-container.vala b/src/plugins/external/rygel-external-container.vala
index 014cbc2..4a5bd4f 100644
--- a/src/plugins/external/rygel-external-container.vala
+++ b/src/plugins/external/rygel-external-container.vala
@@ -93,14 +93,14 @@ public class Rygel.External.Container : Rygel.MediaContainer {
         return yield this.create_media_objects (children_props, this);
     }
 
-    public override async MediaObjects? search (SearchExpression expression,
-                                                uint             offset,
-                                                uint             max_count,
-                                                out uint         total_matches,
-                                                Cancellable?     cancellable)
+    public override async MediaObjects? search (SearchExpression? expression,
+                                                uint              offset,
+                                                uint              max_count,
+                                                out uint          total_matches,
+                                                Cancellable?      cancellable)
                                                 throws GLib.Error {
-        if (!this.searchable) {
-            // Backend doesn't implement search :(
+        if (expression == null || !this.searchable) {
+            // Either its wildcard or backend doesn't implement search :(
             return yield base.search (expression,
                                       offset,
                                       max_count,
diff --git a/src/plugins/media-export/rygel-media-export-db-container.vala b/src/plugins/media-export/rygel-media-export-db-container.vala
index 0b06dfc..54bd5a9 100644
--- a/src/plugins/media-export/rygel-media-export-db-container.vala
+++ b/src/plugins/media-export/rygel-media-export-db-container.vala
@@ -64,12 +64,19 @@ public class Rygel.MediaExport.DBContainer : MediaContainer {
         return children;
     }
 
-    public override async MediaObjects? search (SearchExpression expression,
-                                                uint             offset,
-                                                uint             max_count,
-                                                out uint         total_matches,
-                                                Cancellable?     cancellable)
+    public override async MediaObjects? search (SearchExpression? expression,
+                                                uint              offset,
+                                                uint              max_count,
+                                                out uint          total_matches,
+                                                Cancellable?      cancellable)
                                                 throws GLib.Error {
+        if (expression == null) {
+            return yield base.search (expression,
+                                      offset,
+                                      max_count,
+                                      out total_matches,
+                                      cancellable);
+        }
         MediaObjects children = null;
 
         var max_objects = max_count;
diff --git a/src/plugins/media-export/rygel-media-export-query-container.vala b/src/plugins/media-export/rygel-media-export-query-container.vala
index 3166173..8edec7c 100644
--- a/src/plugins/media-export/rygel-media-export-query-container.vala
+++ b/src/plugins/media-export/rygel-media-export-query-container.vala
@@ -146,12 +146,20 @@ internal class Rygel.MediaExport.QueryContainer : DBContainer {
         }
     }
 
-    public override async MediaObjects? search (SearchExpression expression,
-                                                uint             offset,
-                                                uint             max_count,
-                                                out uint         total_matches,
-                                                Cancellable?     cancellable)
+    public override async MediaObjects? search (SearchExpression? expression,
+                                                uint              offset,
+                                                uint              max_count,
+                                                out uint          total_matches,
+                                                Cancellable?      cancellable)
                                                 throws GLib.Error {
+        if (expression == null) {
+            return yield base.search (expression,
+                                      offset,
+                                      max_count,
+                                      out total_matches,
+                                      cancellable);
+        }
+
         MediaObjects children = null;
 
         var combined_expression = new LogicalExpression ();
diff --git a/src/plugins/media-export/rygel-media-export-root-container.vala b/src/plugins/media-export/rygel-media-export-root-container.vala
index 582ae80..1464419 100644
--- a/src/plugins/media-export/rygel-media-export-root-container.vala
+++ b/src/plugins/media-export/rygel-media-export-root-container.vala
@@ -189,12 +189,20 @@ public class Rygel.MediaExport.RootContainer : Rygel.MediaExport.DBContainer {
         return object;
     }
 
-    public override async MediaObjects? search (SearchExpression expression,
-                                                uint             offset,
-                                                uint             max_count,
-                                                out uint         total_matches,
-                                                Cancellable?     cancellable)
+    public override async MediaObjects? search (SearchExpression? expression,
+                                                uint              offset,
+                                                uint              max_count,
+                                                out uint          total_matches,
+                                                Cancellable?      cancellable)
                                                 throws GLib.Error {
+        if (expression == null) {
+            return yield base.search (expression,
+                                      offset,
+                                      max_count,
+                                      out total_matches,
+                                      cancellable);
+        }
+
         MediaObjects list;
         MediaContainer query_container = null;
         string upnp_class = null;
diff --git a/src/plugins/tracker/rygel-tracker-search-container.vala b/src/plugins/tracker/rygel-tracker-search-container.vala
index feb1114..4c462cb 100644
--- a/src/plugins/tracker/rygel-tracker-search-container.vala
+++ b/src/plugins/tracker/rygel-tracker-search-container.vala
@@ -117,11 +117,11 @@ public class Rygel.Tracker.SearchContainer : Rygel.MediaContainer {
                                   cancellable);
     }
 
-    public override async MediaObjects? search (SearchExpression expression,
-                                                uint             offset,
-                                                uint             max_count,
-                                                out uint         total_matches,
-                                                Cancellable?     cancellable)
+    public override async MediaObjects? search (SearchExpression? expression,
+                                                uint              offset,
+                                                uint              max_count,
+                                                out uint          total_matches,
+                                                Cancellable?      cancellable)
                                                 throws GLib.Error {
         var results = new MediaObjects ();
         var query = this.create_query (expression,
@@ -176,9 +176,9 @@ public class Rygel.Tracker.SearchContainer : Rygel.MediaContainer {
         }
     }
 
-    private SelectionQuery? create_query (SearchExpression expression,
-                                          int              offset,
-                                          int              max_count) {
+    private SelectionQuery? create_query (SearchExpression? expression,
+                                          int               offset,
+                                          int               max_count) {
         if (expression == null || !(expression is RelationalExpression)) {
             return null;
         }
diff --git a/src/rygel/rygel-media-container.vala b/src/rygel/rygel-media-container.vala
index 7df24e9..065542f 100644
--- a/src/rygel/rygel-media-container.vala
+++ b/src/rygel/rygel-media-container.vala
@@ -92,11 +92,11 @@ public abstract class Rygel.MediaContainer : MediaObject {
      *
      * return A list of media objects.
      */
-    public virtual async MediaObjects? search (SearchExpression   expression,
-                                               uint               offset,
-                                               uint               max_count,
-                                               out uint           total_matches,
-                                               Cancellable?       cancellable)
+    public virtual async MediaObjects? search (SearchExpression? expression,
+                                               uint              offset,
+                                               uint              max_count,
+                                               out uint          total_matches,
+                                               Cancellable?      cancellable)
                                                throws Error {
         var result = new MediaObjects ();
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]