@Override public void write(ObjectDataOutput out, XQSequence sequence) throws IOException { try { List<XQItemAccessor> items; synchronized (sequence) { if (sequence.isScrollable()) { sequence.beforeFirst(); items = new ArrayList<>(sequence.count()); } else { items = new ArrayList<>(); } while (sequence.next()) { Object value = sequence.getObject(); if (value instanceof XQItemAccessor) { items.add((XQItemAccessor) value); } else { items.add(sequence.getItem()); } } } logger.trace("write; writing {} items", items.size()); out.writeObject(items); } catch (XQException ex) { throw new IOException(ex); } }
public static Map<String, Object> mapFromSequence(XQSequence cs) throws XQException { Map<String, Object> result; synchronized (cs) { if (cs.isScrollable()) { cs.beforeFirst(); result = new HashMap<>(cs.count()); } else { result = new HashMap<>(); } while (cs.next()) { XQSequence pair = (XQSequence) cs.getObject(); pair.beforeFirst(); pair.next(); String key = pair.getAtomicValue(); pair.next(); Object value = pair.getObject(); result.put(key, value); } } return result; }