fix - suppress nil/empty items from being added to slices
This commit is contained in:
parent
fa3061ee7a
commit
3f4db5e82c
@ -146,15 +146,16 @@ func (c *Collection) Items() (items []*Item, err error) {
|
|||||||
|
|
||||||
paths = variant.Value().([]dbus.ObjectPath)
|
paths = variant.Value().([]dbus.ObjectPath)
|
||||||
|
|
||||||
items = make([]*Item, len(paths))
|
items = make([]*Item, 0)
|
||||||
|
|
||||||
for idx, path := range paths {
|
for _, path := range paths {
|
||||||
|
item = nil
|
||||||
if item, err = NewItem(c, path); err != nil {
|
if item, err = NewItem(c, path); err != nil {
|
||||||
errs = append(errs, err)
|
errs = append(errs, err)
|
||||||
err = nil
|
err = nil
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
items[idx] = item
|
items = append(items, item)
|
||||||
}
|
}
|
||||||
err = NewErrors(err)
|
err = NewErrors(err)
|
||||||
|
|
||||||
@ -245,6 +246,7 @@ func (c *Collection) SearchItems(profile string) (items []*Item, err error) {
|
|||||||
var paths []dbus.ObjectPath
|
var paths []dbus.ObjectPath
|
||||||
var errs []error = make([]error, 0)
|
var errs []error = make([]error, 0)
|
||||||
var attrs map[string]string = make(map[string]string, 0)
|
var attrs map[string]string = make(map[string]string, 0)
|
||||||
|
var item *Item
|
||||||
|
|
||||||
attrs["profile"] = profile
|
attrs["profile"] = profile
|
||||||
|
|
||||||
@ -254,14 +256,16 @@ func (c *Collection) SearchItems(profile string) (items []*Item, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
items = make([]*Item, len(paths))
|
items = make([]*Item, 0)
|
||||||
|
|
||||||
for idx, path := range paths {
|
for _, path := range paths {
|
||||||
if items[idx], err = NewItem(c, path); err != nil {
|
item = nil
|
||||||
|
if item, err = NewItem(c, path); err != nil {
|
||||||
errs = append(errs, err)
|
errs = append(errs, err)
|
||||||
err = nil
|
err = nil
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
items = append(items, item)
|
||||||
}
|
}
|
||||||
err = NewErrors(err)
|
err = NewErrors(err)
|
||||||
|
|
||||||
|
@ -148,6 +148,7 @@ func TestCollection_Label(t *testing.T) {
|
|||||||
t.Fatalf("NewService failed: %v", err.Error())
|
t.Fatalf("NewService failed: %v", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t.Logf("Attempting to get label of collection: %v", defaultCollectionLabel)
|
||||||
if collection, err = svc.GetCollection(defaultCollectionLabel); err != nil {
|
if collection, err = svc.GetCollection(defaultCollectionLabel); err != nil {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"failed when fetching collection '%v': %v",
|
"failed when fetching collection '%v': %v",
|
||||||
|
@ -57,16 +57,17 @@ func (s *Service) Collections() (collections []*Collection, err error) {
|
|||||||
|
|
||||||
paths = variant.Value().([]dbus.ObjectPath)
|
paths = variant.Value().([]dbus.ObjectPath)
|
||||||
|
|
||||||
collections = make([]*Collection, len(paths))
|
collections = make([]*Collection, 0)
|
||||||
|
|
||||||
for idx, path := range paths {
|
for _, path := range paths {
|
||||||
|
coll = nil
|
||||||
if coll, err = NewCollection(s, path); err != nil {
|
if coll, err = NewCollection(s, path); err != nil {
|
||||||
// return
|
// return
|
||||||
errs = append(errs, err)
|
errs = append(errs, err)
|
||||||
err = nil
|
err = nil
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
collections[idx] = coll
|
collections = append(collections, coll)
|
||||||
}
|
}
|
||||||
err = NewErrors(err)
|
err = NewErrors(err)
|
||||||
|
|
||||||
@ -364,6 +365,7 @@ func (s *Service) SearchItems(attributes map[string]string) (unlockedItems []*It
|
|||||||
var ok bool
|
var ok bool
|
||||||
var c *Collection
|
var c *Collection
|
||||||
var cPath dbus.ObjectPath
|
var cPath dbus.ObjectPath
|
||||||
|
var item *Item
|
||||||
var errs []error = make([]error, 0)
|
var errs []error = make([]error, 0)
|
||||||
|
|
||||||
if attributes == nil || len(attributes) == 0 {
|
if attributes == nil || len(attributes) == 0 {
|
||||||
@ -375,8 +377,8 @@ func (s *Service) SearchItems(attributes map[string]string) (unlockedItems []*It
|
|||||||
DbusServiceSearchItems, 0, attributes,
|
DbusServiceSearchItems, 0, attributes,
|
||||||
).Store(&unlocked, &locked)
|
).Store(&unlocked, &locked)
|
||||||
|
|
||||||
lockedItems = make([]*Item, len(locked))
|
lockedItems = make([]*Item, 0)
|
||||||
unlockedItems = make([]*Item, len(unlocked))
|
unlockedItems = make([]*Item, 0)
|
||||||
|
|
||||||
if collectionObjs, err = s.Collections(); err != nil {
|
if collectionObjs, err = s.Collections(); err != nil {
|
||||||
return
|
return
|
||||||
@ -389,8 +391,9 @@ func (s *Service) SearchItems(attributes map[string]string) (unlockedItems []*It
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Locked items
|
// Locked items
|
||||||
for idx, i := range locked {
|
for _, i := range locked {
|
||||||
|
|
||||||
|
item = nil
|
||||||
cPath = dbus.ObjectPath(filepath.Dir(string(i)))
|
cPath = dbus.ObjectPath(filepath.Dir(string(i)))
|
||||||
|
|
||||||
if c, ok = collections[cPath]; !ok {
|
if c, ok = collections[cPath]; !ok {
|
||||||
@ -400,18 +403,20 @@ func (s *Service) SearchItems(attributes map[string]string) (unlockedItems []*It
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if lockedItems[idx], err = NewItem(c, i); err != nil {
|
if item, err = NewItem(c, i); err != nil {
|
||||||
errs = append(errs, errors.New(fmt.Sprintf(
|
errs = append(errs, errors.New(fmt.Sprintf(
|
||||||
"could not create Item for locked item %v", string(i),
|
"could not create Item for locked item %v", string(i),
|
||||||
)))
|
)))
|
||||||
err = nil
|
err = nil
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
lockedItems = append(lockedItems, item)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Unlocked items
|
// Unlocked items
|
||||||
for idx, i := range unlocked {
|
for _, i := range unlocked {
|
||||||
|
|
||||||
|
item = nil
|
||||||
cPath = dbus.ObjectPath(filepath.Dir(string(i)))
|
cPath = dbus.ObjectPath(filepath.Dir(string(i)))
|
||||||
|
|
||||||
if c, ok = collections[cPath]; !ok {
|
if c, ok = collections[cPath]; !ok {
|
||||||
@ -421,13 +426,14 @@ func (s *Service) SearchItems(attributes map[string]string) (unlockedItems []*It
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if unlockedItems[idx], err = NewItem(c, i); err != nil {
|
if item, err = NewItem(c, i); err != nil {
|
||||||
errs = append(errs, errors.New(fmt.Sprintf(
|
errs = append(errs, errors.New(fmt.Sprintf(
|
||||||
"could not create Item for unlocked item %v", string(i),
|
"could not create Item for unlocked item %v", string(i),
|
||||||
)))
|
)))
|
||||||
err = nil
|
err = nil
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
unlockedItems = append(unlockedItems, item)
|
||||||
}
|
}
|
||||||
|
|
||||||
if errs != nil && len(errs) > 0 {
|
if errs != nil && len(errs) > 0 {
|
||||||
|
Loading…
Reference in New Issue
Block a user