Example usage for org.apache.commons.collections.iterators IteratorChain IteratorChain

List of usage examples for org.apache.commons.collections.iterators IteratorChain IteratorChain

Introduction

In this page you can find the example usage for org.apache.commons.collections.iterators IteratorChain IteratorChain.

Prototype

public IteratorChain(Iterator a, Iterator b) 

Source Link

Document

Constructs a new IteratorChain over the two given iterators.

Usage

From source file:com.cyclopsgroup.waterview.DefaultContext.java

/**
 * Overwrite or implement method keys()/*from  w w  w.  j ava  2 s .co  m*/
 * @see com.cyclopsgroup.waterview.Context#keys()
 */
public Iterator keys() {
    if (parent == null) {
        return content.keySet().iterator();
    }
    return new IteratorChain(parent.keys(), content.keySet().iterator());
}

From source file:name.martingeisse.webide.features.java.compiler.classpath.AbstractLibraryFileManager.java

@Override
public final Iterable<JavaFileObject> list(final Location location, final String packageName,
        final Set<Kind> kinds, final boolean recurse) throws IOException {
    logger.trace("listing library [" + libraryNameForLogging + "] files for location [" + location
            + "], package [" + packageName + "], kinds [" + StringUtils.join(kinds, ", ") + "], recurse ["
            + recurse + "]");
    final Iterable<JavaFileObject> superIterable = super.list(location, packageName, kinds, recurse);
    if (location == StandardLocation.CLASS_PATH && kinds.contains(Kind.CLASS)) {
        final Iterable<JavaFileObject> libraryIterable = listLibraryClassFiles(packageName, recurse);
        logger.trace(// w  w w  . ja  v  a2 s. co  m
                "contributed files from this library: " + StringUtils.join(libraryIterable.iterator(), ", "));
        return new Iterable<JavaFileObject>() {
            @Override
            public Iterator<JavaFileObject> iterator() {
                return GenericTypeUtil
                        .unsafeCast(new IteratorChain(superIterable.iterator(), libraryIterable.iterator()));
            }
        };
    } else {
        logger.trace("no contribution from this library because of location/kinds");
        return superIterable;
    }
}

From source file:name.martingeisse.webide.features.java.compiler.memfile.MemoryFileManager.java

@Override
public Iterable<JavaFileObject> list(final Location location, final String packageName, final Set<Kind> kinds,
        final boolean recurse) throws IOException {
    logger.trace("listing memory files for location [" + location + "], package [" + packageName + "], kinds ["
            + StringUtils.join(kinds, ", ") + "], recurse [" + recurse + "]");
    final Iterable<JavaFileObject> superIterable = super.list(location, packageName, kinds, recurse);
    final Iterable<JavaFileObject> thisIterable = listThis(location, packageName, kinds, recurse);
    logger.trace("contributed memory files: " + StringUtils.join(thisIterable.iterator(), ", "));
    return new Iterable<JavaFileObject>() {
        @Override//  w ww.  j ava2s. c om
        public Iterator<JavaFileObject> iterator() {
            return GenericTypeUtil
                    .unsafeCast(new IteratorChain(superIterable.iterator(), thisIterable.iterator()));
        }
    };
}

From source file:flex2.compiler.mxml.rep.MxmlDocument.java

/**
 *
 *///  w w  w .  jav  a  2s.c o  m
public final Iterator<Initializer> getNonStagePropertyInitializerIterator() {
    return new FilterIterator(
            new IteratorChain(root.getPropertyInitializerIterator(false), getTopLevelInitializerIterator()),
            new Predicate() {
                public boolean evaluate(Object object) {
                    if (object instanceof NamedInitializer)
                        return (!StandardDefs.isStageProperty(((NamedInitializer) object).getName()))
                                && (!((NamedInitializer) object).isDesignLayer());
                    return true;
                }
            });
}

From source file:flex2.compiler.mxml.rep.MxmlDocument.java

/**
 *
 *///  w w  w  . j a  v a2s .  com
public final Iterator<Initializer> getStagePropertyInitializerIterator() {
    return new FilterIterator(
            new IteratorChain(root.getPropertyInitializerIterator(false), getTopLevelInitializerIterator()),
            new Predicate() {
                public boolean evaluate(Object object) {
                    if (object instanceof NamedInitializer)
                        return StandardDefs.isStageProperty(((NamedInitializer) object).getName());
                    return false;
                }
            });
}

From source file:flex2.compiler.mxml.rep.MxmlDocument.java

/**
 * a little trickiness here: we need to initialize both our superclass properties, and document variables that
 * have initializers/*from w  w  w  .  j a  v a2  s  . c o  m*/
 */
public final Iterator<Initializer> getPropertyInitializerIterator() {
    return new IteratorChain(root.getPropertyInitializerIterator(false), getTopLevelInitializerIterator());
}

From source file:flex2.compiler.mxml.rep.Model.java

/**
 *
 *//*  w  w w .  java  2  s. com*/
public Iterator getStyleAndEffectInitializerIterator() {
    return new IteratorChain(getStyleInitializerIterator(), getEffectInitializerIterator());
}

From source file:org.apache.accumulo.server.util.FindOfflineTablets.java

/**
 * @param args//from  w  ww . ja  v a2  s.  com
 */
public static void main(String[] args) throws Exception {
    ClientOpts opts = new ClientOpts();
    opts.parseArgs(FindOfflineTablets.class.getName(), args);
    final AtomicBoolean scanning = new AtomicBoolean(false);
    Instance instance = opts.getInstance();
    MetaDataTableScanner rootScanner = new MetaDataTableScanner(instance,
            SecurityConstants.getSystemCredentials(), Constants.METADATA_ROOT_TABLET_KEYSPACE);
    MetaDataTableScanner metaScanner = new MetaDataTableScanner(instance,
            SecurityConstants.getSystemCredentials(), Constants.NON_ROOT_METADATA_KEYSPACE);
    @SuppressWarnings("unchecked")
    Iterator<TabletLocationState> scanner = (Iterator<TabletLocationState>) new IteratorChain(rootScanner,
            metaScanner);
    LiveTServerSet tservers = new LiveTServerSet(instance, DefaultConfiguration.getDefaultConfiguration(),
            new Listener() {
                @Override
                public void update(LiveTServerSet current, Set<TServerInstance> deleted,
                        Set<TServerInstance> added) {
                    if (!deleted.isEmpty() && scanning.get())
                        log.warn("Tablet servers deleted while scanning: " + deleted);
                    if (!added.isEmpty() && scanning.get())
                        log.warn("Tablet servers added while scanning: " + added);
                }
            });
    tservers.startListeningForTabletServerChanges();
    scanning.set(true);
    while (scanner.hasNext()) {
        TabletLocationState locationState = scanner.next();
        TabletState state = locationState.getState(tservers.getCurrentServers());
        if (state != null && state != TabletState.HOSTED && TableManager.getInstance()
                .getTableState(locationState.extent.getTableId().toString()) != TableState.OFFLINE)
            if (!locationState.extent.equals(Constants.ROOT_TABLET_EXTENT))
                System.out.println(locationState + " is " + state + "  #walogs:" + locationState.walogs.size());
    }
}

From source file:org.apache.chemistry.opencmis.jcr.util.Iterables.java

public static <T> Iterable<T> concat(final Iterable<T> it1, final Iterable<T> it2) {
    return new Iterable<T>() {
        @SuppressWarnings("unchecked")
        public Iterator<T> iterator() {
            return new IteratorChain(it1.iterator(), it2.iterator());
        }/*www .  j  av  a2  s.co  m*/
    };
}

From source file:org.apache.jackrabbit.core.ItemImpl.java

/**
 * {@inheritDoc}//w w w  .j  a  v a 2 s  .c om
 */
public void save() throws AccessDeniedException, ItemExistsException, ConstraintViolationException,
        InvalidItemStateException, ReferentialIntegrityException, VersionException, LockException,
        NoSuchNodeTypeException, RepositoryException {
    // check state of this instance
    sanityCheck();

    // synchronize on this session
    synchronized (session) {
        /**
         * build list of transient (i.e. new & modified) states that
         * should be persisted
         */
        Collection dirty = getTransientStates();
        if (dirty.size() == 0) {
            // no transient items, nothing to do here
            return;
        }

        /**
         * build list of transient descendants in the attic
         * (i.e. those marked as 'removed')
         */
        Collection removed = getRemovedStates();

        /**
         * build set of item id's which are within the scope of
         * (i.e. affected by) this save operation
         */
        Set affectedIds = new HashSet(dirty.size() + removed.size());
        for (Iterator it = new IteratorChain(dirty.iterator(), removed.iterator()); it.hasNext();) {
            affectedIds.add(((ItemState) it.next()).getId());
        }

        /**
         * make sure that this save operation is totally 'self-contained'
         * and independent; items within the scope of this save operation
         * must not have 'external' dependencies;
         * (e.g. moving a node requires that the target node including both
         * old and new parents are saved)
         */
        for (Iterator it = new IteratorChain(dirty.iterator(), removed.iterator()); it.hasNext();) {
            ItemState transientState = (ItemState) it.next();
            if (transientState.isNode()) {
                NodeState nodeState = (NodeState) transientState;
                Set dependentIDs = new HashSet();
                if (nodeState.hasOverlayedState()) {
                    NodeState overlayedState = (NodeState) nodeState.getOverlayedState();
                    NodeId oldParentId = overlayedState.getParentId();
                    NodeId newParentId = nodeState.getParentId();
                    if (oldParentId != null) {
                        if (newParentId == null) {
                            // node has been removed, add old parents
                            // to dependencies
                            if (overlayedState.isShareable()) {
                                dependentIDs.addAll(overlayedState.getSharedSet());
                            } else {
                                dependentIDs.add(oldParentId);
                            }
                        } else {
                            if (!oldParentId.equals(newParentId)) {
                                // node has been moved to a new location,
                                // add old and new parent to dependencies
                                dependentIDs.add(oldParentId);
                                dependentIDs.add(newParentId);
                            } else {
                                // parent id hasn't changed, check whether
                                // the node has been renamed (JCR-1034)
                                if (!affectedIds.contains(newParentId)
                                        && stateMgr.hasTransientItemState(newParentId)) {
                                    try {
                                        NodeState parent = (NodeState) stateMgr
                                                .getTransientItemState(newParentId);
                                        // check parent's renamed child node entries
                                        for (Iterator cneIt = parent.getRenamedChildNodeEntries()
                                                .iterator(); cneIt.hasNext();) {
                                            ChildNodeEntry cne = (ChildNodeEntry) cneIt.next();
                                            if (cne.getId().equals(nodeState.getId())) {
                                                // node has been renamed,
                                                // add parent to dependencies
                                                dependentIDs.add(newParentId);
                                            }
                                        }
                                    } catch (ItemStateException ise) {
                                        // should never get here
                                        log.warn("failed to retrieve transient state: " + newParentId, ise);
                                    }
                                }
                            }
                        }
                    }
                }

                // removed child node entries
                for (Iterator cneIt = nodeState.getRemovedChildNodeEntries().iterator(); cneIt.hasNext();) {
                    ChildNodeEntry cne = (ChildNodeEntry) cneIt.next();
                    dependentIDs.add(cne.getId());
                }
                // added child node entries
                for (Iterator cneIt = nodeState.getAddedChildNodeEntries().iterator(); cneIt.hasNext();) {
                    ChildNodeEntry cne = (ChildNodeEntry) cneIt.next();
                    dependentIDs.add(cne.getId());
                }

                // now walk through dependencies and check whether they
                // are within the scope of this save operation
                Iterator depIt = dependentIDs.iterator();
                while (depIt.hasNext()) {
                    NodeId id = (NodeId) depIt.next();
                    if (!affectedIds.contains(id)) {
                        // JCR-1359 workaround: check whether unresolved
                        // dependencies originate from 'this' session;
                        // otherwise ignore them
                        if (stateMgr.hasTransientItemState(id) || stateMgr.hasTransientItemStateInAttic(id)) {
                            // need to save dependency as well
                            String msg = itemMgr.safeGetJCRPath(id) + " needs to be saved as well.";
                            log.debug(msg);
                            throw new ConstraintViolationException(msg);
                        }
                    }
                }
            }
        }

        /**
         * validate access and node type constraints
         * (this will also validate child removals)
         */
        validateTransientItems(dirty.iterator(), removed.iterator());

        // start the update operation
        try {
            stateMgr.edit();
        } catch (IllegalStateException e) {
            String msg = "Unable to start edit operation";
            log.debug(msg);
            throw new RepositoryException(msg, e);
        }

        boolean succeeded = false;

        try {

            // process transient items marked as 'removed'
            removeTransientItems(removed.iterator());

            // process transient items that have change in mixins
            processShareableNodes(dirty.iterator());

            // initialize version histories for new nodes (might generate new transient state)
            if (initVersionHistories(dirty.iterator())) {
                // re-build the list of transient states because the previous call
                // generated new transient state
                dirty = getTransientStates();
            }

            // process 'new' or 'modified' transient states
            persistTransientItems(dirty.iterator());

            // dispose the transient states marked 'new' or 'modified'
            // at this point item state data is pushed down one level,
            // node instances are disconnected from the transient
            // item state and connected to the 'overlayed' item state.
            // transient item states must be removed now. otherwise
            // the session item state provider will return an orphaned
            // item state which is not referenced by any node instance.
            for (Iterator it = dirty.iterator(); it.hasNext();) {
                ItemState transientState = (ItemState) it.next();
                // dispose the transient state, it is no longer used
                stateMgr.disposeTransientItemState(transientState);
            }

            // end update operation
            stateMgr.update();
            // update operation succeeded
            succeeded = true;
        } catch (StaleItemStateException e) {
            throw new InvalidItemStateException(e.getMessage());
        } catch (ItemStateException e) {
            throw new RepositoryException("Unable to update item: " + this, e);
        } finally {
            if (!succeeded) {
                // update operation failed, cancel all modifications
                stateMgr.cancel();

                // JCR-288: if an exception has been thrown during
                // update() the transient changes have already been
                // applied by persistTransientItems() and we need to
                // restore transient state, i.e. undo the effect of
                // persistTransientItems()
                restoreTransientItems(dirty.iterator());
            }
        }

        // now it is safe to dispose the transient states:
        // dispose the transient states marked 'removed'.
        // item states in attic are removed after store, because
        // the observation mechanism needs to build paths of removed
        // items in store().
        for (Iterator it = removed.iterator(); it.hasNext();) {
            ItemState transientState = (ItemState) it.next();
            // dispose the transient state, it is no longer used
            stateMgr.disposeTransientItemStateInAttic(transientState);
        }
    }
}