expose key and value iterators in ImmutableOpenMap
This commit is contained in:
parent
84d7929c3b
commit
fd014473d0
|
@ -34,7 +34,6 @@ import org.elasticsearch.common.regex.Regex;
|
||||||
import org.elasticsearch.common.transport.TransportAddress;
|
import org.elasticsearch.common.transport.TransportAddress;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -42,7 +41,7 @@ import java.util.Set;
|
||||||
import static com.google.common.collect.Lists.newArrayList;
|
import static com.google.common.collect.Lists.newArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class holds all {@link DiscoveryNode} in the cluster and provides convinience methods to
|
* This class holds all {@link DiscoveryNode} in the cluster and provides convenience methods to
|
||||||
* access, modify merge / diff discovery nodes.
|
* access, modify merge / diff discovery nodes.
|
||||||
*/
|
*/
|
||||||
public class DiscoveryNodes implements Iterable<DiscoveryNode> {
|
public class DiscoveryNodes implements Iterable<DiscoveryNode> {
|
||||||
|
@ -50,13 +49,10 @@ public class DiscoveryNodes implements Iterable<DiscoveryNode> {
|
||||||
public static final DiscoveryNodes EMPTY_NODES = builder().build();
|
public static final DiscoveryNodes EMPTY_NODES = builder().build();
|
||||||
|
|
||||||
private final ImmutableOpenMap<String, DiscoveryNode> nodes;
|
private final ImmutableOpenMap<String, DiscoveryNode> nodes;
|
||||||
|
|
||||||
private final ImmutableOpenMap<String, DiscoveryNode> dataNodes;
|
private final ImmutableOpenMap<String, DiscoveryNode> dataNodes;
|
||||||
|
|
||||||
private final ImmutableOpenMap<String, DiscoveryNode> masterNodes;
|
private final ImmutableOpenMap<String, DiscoveryNode> masterNodes;
|
||||||
|
|
||||||
private final String masterNodeId;
|
private final String masterNodeId;
|
||||||
|
|
||||||
private final String localNodeId;
|
private final String localNodeId;
|
||||||
|
|
||||||
private DiscoveryNodes(ImmutableOpenMap<String, DiscoveryNode> nodes, ImmutableOpenMap<String, DiscoveryNode> dataNodes, ImmutableOpenMap<String, DiscoveryNode> masterNodes, String masterNodeId, String localNodeId) {
|
private DiscoveryNodes(ImmutableOpenMap<String, DiscoveryNode> nodes, ImmutableOpenMap<String, DiscoveryNode> dataNodes, ImmutableOpenMap<String, DiscoveryNode> masterNodes, String masterNodeId, String localNodeId) {
|
||||||
|
@ -69,18 +65,7 @@ public class DiscoveryNodes implements Iterable<DiscoveryNode> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UnmodifiableIterator<DiscoveryNode> iterator() {
|
public UnmodifiableIterator<DiscoveryNode> iterator() {
|
||||||
final Iterator<ObjectCursor<DiscoveryNode>> cursor = nodes.values().iterator();
|
return nodes.valuesIt();
|
||||||
return new UnmodifiableIterator<DiscoveryNode>() {
|
|
||||||
@Override
|
|
||||||
public boolean hasNext() {
|
|
||||||
return cursor.hasNext();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public DiscoveryNode next() {
|
|
||||||
return cursor.next().value;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -20,9 +20,11 @@
|
||||||
package org.elasticsearch.common.collect;
|
package org.elasticsearch.common.collect;
|
||||||
|
|
||||||
import com.carrotsearch.hppc.*;
|
import com.carrotsearch.hppc.*;
|
||||||
|
import com.carrotsearch.hppc.cursors.ObjectCursor;
|
||||||
import com.carrotsearch.hppc.cursors.ObjectObjectCursor;
|
import com.carrotsearch.hppc.cursors.ObjectObjectCursor;
|
||||||
import com.carrotsearch.hppc.predicates.ObjectPredicate;
|
import com.carrotsearch.hppc.predicates.ObjectPredicate;
|
||||||
import com.carrotsearch.hppc.procedures.ObjectObjectProcedure;
|
import com.carrotsearch.hppc.procedures.ObjectObjectProcedure;
|
||||||
|
import com.google.common.collect.UnmodifiableIterator;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -43,11 +45,11 @@ public final class ImmutableOpenMap<KType, VType> implements Iterable<ObjectObje
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Returns the value associated with the given key or the default value
|
* @return Returns the value associated with the given key or the default value
|
||||||
* for the key type, if the key is not associated with any value.
|
* for the key type, if the key is not associated with any value.
|
||||||
* <p/>
|
* <p/>
|
||||||
* <b>Important note:</b> For primitive type values, the value returned for a non-existing
|
* <b>Important note:</b> For primitive type values, the value returned for a non-existing
|
||||||
* key may not be the default value of the primitive type (it may be any value previously
|
* key may not be the default value of the primitive type (it may be any value previously
|
||||||
* assigned to that slot).
|
* assigned to that slot).
|
||||||
*/
|
*/
|
||||||
public VType get(KType key) {
|
public VType get(KType key) {
|
||||||
return map.get(key);
|
return map.get(key);
|
||||||
|
@ -106,6 +108,24 @@ public final class ImmutableOpenMap<KType, VType> implements Iterable<ObjectObje
|
||||||
return map.keys();
|
return map.keys();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a direct iterator over the keys.
|
||||||
|
*/
|
||||||
|
public UnmodifiableIterator<KType> keysIt() {
|
||||||
|
final Iterator<ObjectCursor<KType>> iterator = map.keys().iterator();
|
||||||
|
return new UnmodifiableIterator<KType>() {
|
||||||
|
@Override
|
||||||
|
public boolean hasNext() {
|
||||||
|
return iterator.hasNext();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public KType next() {
|
||||||
|
return iterator.next().value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Returns a container with all values stored in this map.
|
* @return Returns a container with all values stored in this map.
|
||||||
*/
|
*/
|
||||||
|
@ -113,6 +133,24 @@ public final class ImmutableOpenMap<KType, VType> implements Iterable<ObjectObje
|
||||||
return map.values();
|
return map.values();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a direct iterator over the keys.
|
||||||
|
*/
|
||||||
|
public UnmodifiableIterator<VType> valuesIt() {
|
||||||
|
final Iterator<ObjectCursor<VType>> iterator = map.values().iterator();
|
||||||
|
return new UnmodifiableIterator<VType>() {
|
||||||
|
@Override
|
||||||
|
public boolean hasNext() {
|
||||||
|
return iterator.hasNext();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public VType next() {
|
||||||
|
return iterator.next().value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return map.toString();
|
return map.toString();
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2008 Google Inc.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.elasticsearch.common.inject.internal;
|
|
||||||
|
|
||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An iterator that does not support {@link #remove}.
|
|
||||||
*
|
|
||||||
* @author Jared Levy
|
|
||||||
*/
|
|
||||||
public abstract class UnmodifiableIterator<E> implements Iterator<E> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Guaranteed to throw an exception and leave the underlying data unmodified.
|
|
||||||
*
|
|
||||||
* @throws UnsupportedOperationException always
|
|
||||||
*/
|
|
||||||
public final void remove() {
|
|
||||||
throw new UnsupportedOperationException();
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue