All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.tailf.jnc.ElementLeafListValueIterator Maven / Gradle / Ivy

The newest version!
package com.tailf.jnc;

import java.util.Iterator;

/**
 * This is an iterator class that is used for iterating over all leaf-list
 * children with a specified name in a NodeSet. An object of this iterator
 * class is obtained from the {@link Element#iterator} method.
 * 

* Example usage: * *

 * ElementLeafListValueIterator domainIter = config.iterator("domain");
 * while (domainIter.hasNext()) {
 *     String domain = (String) domainIter.next();
 *     System.out.println("Domain: " + host);
 * }
 * 
* */ public class ElementLeafListValueIterator implements Iterator { private Iterator childrenIterator; private Element nextChild; private boolean hasNextChild = false; private final String name; /** * Constructor to create a new children iterator for leaf-list children of * a specific name. */ public ElementLeafListValueIterator(NodeSet children, String name) { childrenIterator = (children == null) ? null : children.iterator(); this.name = name; } /** * @return true if there are more children; * false otherwise. */ @Override public boolean hasNext() { if (hasNextChild) { return true; } if (childrenIterator == null) { return false; } while (childrenIterator.hasNext()) { if (name == null) { return true; } final Element child = childrenIterator.next(); if (child.name.equals(name)) { hasNextChild = true; nextChild = child; return true; } } return hasNextChild = false; } /** * @return next child or null. */ public Object nextElement() { if (hasNextChild) { hasNextChild = false; return nextChild.value; } hasNextChild = false; while (childrenIterator.hasNext()) { final Element child = childrenIterator.next(); if (name == null) { return child.value; } else if (child.name.equals(name)) { return child.value; } } return null; } /** * @return next child or null. */ @Override public Object next() { return nextElement(); } /** * Remove is not supported. */ @Override public void remove() { } }