@Override public <T> List<T> listForKey(final String key) { final NSObject value = dict.objectForKey(key); if(null == value) { return null; } if(value instanceof NSArray) { final NSArray array = (NSArray) value; final List<T> list = new ArrayList<T>(); for(int i = 0; i < array.count(); i++) { final NSObject next = array.objectAtIndex(i); if(next instanceof NSDictionary) { list.add((T) next); } else if(next instanceof NSString) { list.add((T) next.toString()); } else { log.warn(String.format("Ignore content of type %s", next)); } } return list; } log.warn(String.format("Unexpected value type for serialized key %s", key)); return null; }
@Override public Collection<S> readCollection(final Local file) throws AccessDeniedException { final Collection<S> c = new Collection<S>(); final NSArray list = (NSArray) this.parse(file.getInputStream()); if(null == list) { log.error(String.format("Invalid bookmark file %s", file)); return c; } for(int i = 0; i < list.count(); i++) { NSObject next = list.objectAtIndex(i); if(next instanceof NSDictionary) { final NSDictionary dict = (NSDictionary) next; final S object = this.deserialize(dict); if(null == object) { continue; } c.add(object); } } return c; }