You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2017/04/13 13:30:50 UTC
[03/21] ignite git commit: ignite-3682: all anonymous classes were
extracted
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableMapPredicatesTransformerWrapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableMapPredicatesTransformerWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableMapPredicatesTransformerWrapper.java
new file mode 100644
index 0000000..9803ba8
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableMapPredicatesTransformerWrapper.java
@@ -0,0 +1,168 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import org.apache.ignite.internal.util.GridSerializableMap;
+import org.apache.ignite.internal.util.GridSerializableSet;
+import org.apache.ignite.internal.util.lang.GridFunc;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteClosure;
+import org.apache.ignite.lang.IgnitePredicate;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Light-weight view on given map with provided predicate and transformer.
+ *
+ * @param <K> Type of the key.
+ * @param <V> Type of the input map value.
+ * @param <V1> Type of the output map value.
+ */
+public class GridSerializableMapPredicatesTransformerWrapper<K, V1, V> extends GridSerializableMap<K, V1> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** */
+ private final Map<K, V> map;
+
+ /** */
+ private final IgniteClosure<V, V1> transformer;
+
+ /** */
+ private final boolean hasPred;
+
+ /** */
+ private final IgnitePredicate<? super K>[] predicates;
+
+ /** Entry predicate. */
+ private IgnitePredicate<Entry<K, V>> ep;
+
+ /**
+ * @param map Input map that serves as a base for the view.
+ * @param transformer Transformer for map value transformation.
+ * @param predicates Optional predicates. If predicates are not provided - all will be in the view.
+ */
+ @SuppressWarnings({"unchecked"})
+ public GridSerializableMapPredicatesTransformerWrapper(Map<K, V> map, IgniteClosure<V, V1> transformer,
+ IgnitePredicate<? super K>... predicates) {
+ this.map = map;
+ this.transformer = transformer;
+ this.hasPred = (predicates != null && predicates.length > 0);
+ this.predicates = predicates;
+ this.ep = new IgnitePredicateEvaluateEntryByKey(predicates);
+ }
+
+ /** {@inheritDoc} */
+ @NotNull @Override public Set<Entry<K, V1>> entrySet() {
+ return new GridSerializableSet<Entry<K, V1>>() {
+ @NotNull
+ @Override public Iterator<Entry<K, V1>> iterator() {
+ return new Iterator<Entry<K, V1>>() {
+ private Iterator<Entry<K, V>> it = GridFunc.iterator0(map.entrySet(), true, ep);
+
+ @Override public boolean hasNext() {
+ return it.hasNext();
+ }
+
+ @Override public Entry<K, V1> next() {
+ final Entry<K, V> e = it.next();
+
+ return new Entry<K, V1>() {
+ @Override public K getKey() {
+ return e.getKey();
+ }
+
+ @Override public V1 getValue() {
+ return transformer.apply(e.getValue());
+ }
+
+ @Override public V1 setValue(V1 val) {
+ throw new UnsupportedOperationException("Put is not supported for readonly map view.");
+ }
+ };
+ }
+
+ @Override public void remove() {
+ throw new UnsupportedOperationException("Remove is not support for readonly map view.");
+ }
+ };
+ }
+
+ @Override public int size() {
+ return hasPred ? F.size(map.keySet(), predicates) : map.size();
+ }
+
+ @SuppressWarnings({"unchecked"})
+ @Override public boolean remove(Object o) {
+ throw new UnsupportedOperationException("Remove is not support for readonly map view.");
+ }
+
+ @SuppressWarnings({"unchecked"})
+ @Override public boolean contains(Object o) {
+ return F.isAll((Entry<K, V>)o, ep) && map.entrySet().contains(o);
+ }
+
+ @Override public boolean isEmpty() {
+ return hasPred ? !iterator().hasNext() : map.isEmpty();
+ }
+ };
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean isEmpty() {
+ return hasPred ? entrySet().isEmpty() : map.isEmpty();
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings({"unchecked"})
+ @Nullable @Override public V1 get(Object key) {
+ if (GridFunc.isAll((K)key, predicates)) {
+ V v = map.get(key);
+
+ if (v != null)
+ return transformer.apply(v);
+ }
+
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Nullable @Override public V1 put(K key, V1 val) {
+ throw new UnsupportedOperationException("Put is not supported for readonly map view.");
+ }
+
+ /** {@inheritDoc} */
+ @Override public V1 remove(Object key) {
+ throw new UnsupportedOperationException("Remove is not supported for readonly map view.");
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings({"unchecked"})
+ @Override public boolean containsKey(Object key) {
+ return GridFunc.isAll((K)key, predicates) && map.containsKey(key);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(GridSerializableMapPredicatesTransformerWrapper.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableMapPredicatesWrapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableMapPredicatesWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableMapPredicatesWrapper.java
new file mode 100644
index 0000000..3528ae8
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableMapPredicatesWrapper.java
@@ -0,0 +1,121 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import org.apache.ignite.internal.util.GridSerializableMap;
+import org.apache.ignite.internal.util.GridSerializableSet;
+import org.apache.ignite.internal.util.lang.GridFunc;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgnitePredicate;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Light-weight view on given map with provided predicate.
+ *
+ * @param <K> Type of the key.
+ * @param <V> Type of the value.
+ */
+public class GridSerializableMapPredicatesWrapper<K, V> extends GridSerializableMap<K, V> {
+ /** */
+ private static final long serialVersionUID = 5531745605372387948L;
+
+ /** */
+ private final Map<K, V> map;
+
+ /** */
+ private final IgnitePredicate<? super K>[] predicates;
+
+ /** Entry predicate. */
+ private IgnitePredicate<Entry<K, V>> entryPredicate;
+
+ /**
+ * @param map Input map that serves as a base for the view.
+ * @param predicates Optional predicates. If predicates are not provided - all will be in the view.
+ */
+ @SuppressWarnings({"unchecked"})
+ public GridSerializableMapPredicatesWrapper(Map<K, V> map, IgnitePredicate<? super K>... predicates) {
+ this.map = map;
+ this.predicates = predicates;
+ this.entryPredicate = new IgnitePredicateEvaluateEntryByKey(predicates);
+ }
+
+ /** {@inheritDoc} */
+ @NotNull @Override public Set<Entry<K, V>> entrySet() {
+ return new GridSerializableSet<Entry<K, V>>() {
+ @NotNull
+ @Override public Iterator<Entry<K, V>> iterator() {
+ return GridFunc.iterator0(map.entrySet(), false, entryPredicate);
+ }
+
+ @Override public int size() {
+ return F.size(map.keySet(), predicates);
+ }
+
+ @SuppressWarnings({"unchecked"})
+ @Override public boolean remove(Object o) {
+ return F.isAll((Entry<K, V>)o, entryPredicate) && map.entrySet().remove(o);
+ }
+
+ @SuppressWarnings({"unchecked"})
+ @Override public boolean contains(Object o) {
+ return F.isAll((Entry<K, V>)o, entryPredicate) && map.entrySet().contains(o);
+ }
+
+ @Override public boolean isEmpty() {
+ return !iterator().hasNext();
+ }
+ };
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean isEmpty() {
+ return entrySet().isEmpty();
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings({"unchecked"})
+ @Nullable @Override public V get(Object key) {
+ return GridFunc.isAll((K)key, predicates) ? map.get(key) : null;
+ }
+
+ /** {@inheritDoc} */
+ @Nullable @Override public V put(K key, V val) {
+ V oldVal = get(key);
+
+ if (GridFunc.isAll(key, predicates))
+ map.put(key, val);
+
+ return oldVal;
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings({"unchecked"})
+ @Override public boolean containsKey(Object key) {
+ return GridFunc.isAll((K)key, predicates) && map.containsKey(key);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(GridSerializableMapPredicatesWrapper.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableMapReadOnlyClosurePredicateWrapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableMapReadOnlyClosurePredicateWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableMapReadOnlyClosurePredicateWrapper.java
new file mode 100644
index 0000000..2782b93
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableMapReadOnlyClosurePredicateWrapper.java
@@ -0,0 +1,165 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import org.apache.ignite.internal.util.GridSerializableMap;
+import org.apache.ignite.internal.util.GridSerializableSet;
+import org.apache.ignite.internal.util.lang.GridFunc;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteBiClosure;
+import org.apache.ignite.lang.IgnitePredicate;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Light-weight view on given map with provided predicate and transformer.
+ *
+ * @param <K> Type of the key.
+ * @param <V> Type of the input map value.
+ * @param <V1> Type of the output map value.
+ */
+public class GridSerializableMapReadOnlyClosurePredicateWrapper<K, V, V1> extends GridSerializableMap<K, V1> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** */
+ private final Map<K, V> map;
+
+ /** */
+ private final IgniteBiClosure<K, V, V1> transformer;
+
+ /** */
+ private final IgnitePredicate<? super K>[] predicates;
+
+ /** Entry predicate. */
+ private IgnitePredicate<Entry<K, V>> entryPredicate;
+
+ /**
+ * @param map Input map that serves as a base for the view.
+ * @param transformer Transformer for map value transformation.
+ * @param predicates Optional predicates. If predicates are not provided - all will be in the view.
+ */
+ @SuppressWarnings({"unchecked"})
+ public GridSerializableMapReadOnlyClosurePredicateWrapper(Map<K, V> map, IgniteBiClosure<K, V, V1> transformer,
+ IgnitePredicate<? super K>... predicates) {
+ this.map = map;
+ this.transformer = transformer;
+ this.predicates = predicates;
+ entryPredicate = new IgnitePredicateEvaluateEntryByKey(predicates);
+ }
+
+ /** {@inheritDoc} */
+ @NotNull @Override public Set<Entry<K, V1>> entrySet() {
+ return new GridSerializableSet<Entry<K, V1>>() {
+ @NotNull
+ @Override public Iterator<Entry<K, V1>> iterator() {
+ return new Iterator<Entry<K, V1>>() {
+ private Iterator<Entry<K, V>> it = GridFunc.iterator0(map.entrySet(), true, entryPredicate);
+
+ @Override public boolean hasNext() {
+ return it.hasNext();
+ }
+
+ @Override public Entry<K, V1> next() {
+ final Entry<K, V> e = it.next();
+
+ return new Entry<K, V1>() {
+ @Override public K getKey() {
+ return e.getKey();
+ }
+
+ @Override public V1 getValue() {
+ return transformer.apply(e.getKey(), e.getValue());
+ }
+
+ @Override public V1 setValue(V1 val) {
+ throw new UnsupportedOperationException(
+ "Put is not supported for readonly map view.");
+ }
+ };
+ }
+
+ @Override public void remove() {
+ throw new UnsupportedOperationException("Remove is not support for readonly map view.");
+ }
+ };
+ }
+
+ @Override public int size() {
+ return F.size(map.keySet(), predicates);
+ }
+
+ @SuppressWarnings({"unchecked"})
+ @Override public boolean remove(Object o) {
+ throw new UnsupportedOperationException("Remove is not support for readonly map view.");
+ }
+
+ @SuppressWarnings({"unchecked"})
+ @Override public boolean contains(Object o) {
+ return F.isAll((Entry<K, V>)o, entryPredicate) && map.entrySet().contains(o);
+ }
+
+ @Override public boolean isEmpty() {
+ return !iterator().hasNext();
+ }
+ };
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean isEmpty() {
+ return entrySet().isEmpty();
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings({"unchecked"})
+ @Nullable @Override public V1 get(Object key) {
+ if (GridFunc.isAll((K)key, predicates)) {
+ V v = map.get(key);
+
+ if (v != null)
+ return transformer.apply((K)key, v);
+ }
+
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Nullable @Override public V1 put(K key, V1 val) {
+ throw new UnsupportedOperationException("Put is not supported for readonly map view.");
+ }
+
+ /** {@inheritDoc} */
+ @Override public V1 remove(Object key) {
+ throw new UnsupportedOperationException("Remove is not supported for readonly map view.");
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings({"unchecked"})
+ @Override public boolean containsKey(Object key) {
+ return GridFunc.isAll((K)key, predicates) && map.containsKey(key);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(GridSerializableMapReadOnlyClosurePredicateWrapper.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableMapReadOnlyPredicateWrapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableMapReadOnlyPredicateWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableMapReadOnlyPredicateWrapper.java
new file mode 100644
index 0000000..10c36ef
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableMapReadOnlyPredicateWrapper.java
@@ -0,0 +1,153 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.Iterator;
+import java.util.Set;
+import org.apache.ignite.internal.util.GridSerializableMap;
+import org.apache.ignite.internal.util.GridSerializableSet;
+import org.apache.ignite.internal.util.lang.GridFunc;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteClosure;
+import org.apache.ignite.lang.IgnitePredicate;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Light-weight view on given map with provided predicates and mapping.
+ *
+ * @param <K> Key type.
+ * @param <V> Value type.
+ */
+public class GridSerializableMapReadOnlyPredicateWrapper<K, V> extends GridSerializableMap<K, V> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** */
+ private final Set<K> set;
+
+ /** */
+ private final IgniteClosure<? super K, V> mappingClosure;
+
+ /** */
+ private final IgnitePredicate<? super K>[] predicates;
+
+ /** Entry predicate. */
+ private IgnitePredicate<K> entryPredicate;
+
+ /**
+ * @param set Input collection.
+ * @param mappingClosure Mapping closure, that maps key to value.
+ * @param predicates Optional predicates to filter input collection. If predicates are not provided - all elements
+ * will be in
+ */
+ @SuppressWarnings({"unchecked"})
+ public GridSerializableMapReadOnlyPredicateWrapper(Set<K> set, IgniteClosure<? super K, V> mappingClosure,
+ IgnitePredicate<? super K>... predicates) {
+ this.set = set;
+ this.mappingClosure = mappingClosure;
+ this.predicates = predicates;
+ this.entryPredicate = new IgnitePredicateIsAll(predicates);
+ }
+
+ /** {@inheritDoc} */
+ @NotNull @Override public Set<Entry<K, V>> entrySet() {
+ return new GridSerializableSet<Entry<K, V>>() {
+ @NotNull @Override public Iterator<Entry<K, V>> iterator() {
+ return new Iterator<Entry<K, V>>() {
+
+ private Iterator<K> it = GridFunc.iterator0(set, true, entryPredicate);
+
+ @Override public boolean hasNext() {
+ return it.hasNext();
+ }
+
+ @Override public Entry<K, V> next() {
+ final K e = it.next();
+
+ return new Entry<K, V>() {
+ @Override public K getKey() {
+ return e;
+ }
+
+ @Override public V getValue() {
+ return mappingClosure.apply(e);
+ }
+
+ @Override public V setValue(V val) {
+ throw new UnsupportedOperationException(
+ "Put is not supported for readonly collection view.");
+ }
+ };
+ }
+
+ @Override public void remove() {
+ throw new UnsupportedOperationException(
+ "Remove is not support for readonly collection view.");
+ }
+ };
+ }
+
+ @Override public int size() {
+ return F.size(set, predicates);
+ }
+
+ @Override public boolean remove(Object o) {
+ throw new UnsupportedOperationException("Remove is not support for readonly collection view.");
+ }
+
+ @Override public boolean isEmpty() {
+ return !iterator().hasNext();
+ }
+ };
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean isEmpty() {
+ return entrySet().isEmpty();
+ }
+
+ /** {@inheritDoc} */
+ @Nullable @Override public V get(Object key) {
+ if (containsKey(key))
+ return mappingClosure.apply((K)key);
+
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Nullable @Override public V put(K key, V val) {
+ throw new UnsupportedOperationException("Put is not supported for readonly collection view.");
+ }
+
+ /** {@inheritDoc} */
+ @Override public V remove(Object key) {
+ throw new UnsupportedOperationException("Remove is not supported for readonly collection view.");
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean containsKey(Object key) {
+ return GridFunc.isAll((K)key, predicates) && set.contains(key);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(GridSerializableMapReadOnlyPredicateWrapper.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableReadOnlyCollectionPredicateWrapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableReadOnlyCollectionPredicateWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableReadOnlyCollectionPredicateWrapper.java
new file mode 100644
index 0000000..cce95a6
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableReadOnlyCollectionPredicateWrapper.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.Collection;
+import java.util.Iterator;
+import org.apache.ignite.internal.util.GridSerializableCollection;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteClosure;
+import org.apache.ignite.lang.IgnitePredicate;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Light-weight view on given collection with provided predicate.
+ *
+ * @param <T1> Element type after transformation.
+ * @param <T2> Element type.
+ */
+public class GridSerializableReadOnlyCollectionPredicateWrapper<T1, T2> extends GridSerializableCollection<T1> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** */
+ private final Collection<? extends T2> collection;
+
+ /** */
+ private final IgniteClosure<? super T2, T1> transformer;
+
+ /** */
+ private final IgnitePredicate<? super T2>[] predicates;
+
+ /**
+ * @param collection Input collection that serves as a base for the view.
+ * @param transformer Transformation closure.
+ * @param predicates Optional predicated. If predicates are not provided - all elements will be in the view.
+ */
+ public GridSerializableReadOnlyCollectionPredicateWrapper(Collection<? extends T2> collection,
+ IgniteClosure<? super T2, T1> transformer, IgnitePredicate<? super T2>... predicates) {
+ this.collection = collection;
+ this.transformer = transformer;
+ this.predicates = predicates;
+ }
+
+ /** {@inheritDoc} */
+ @NotNull @Override public Iterator<T1> iterator() {
+ return F.<T2, T1>iterator(collection, transformer, true, predicates);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int size() {
+ return F.isEmpty(predicates) ? collection.size() : F.size(iterator());
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean isEmpty() {
+ return F.isEmpty(predicates) ? collection.isEmpty() : !iterator().hasNext();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(GridSerializableReadOnlyCollectionPredicateWrapper.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableReadOnlyCollectionWrapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableReadOnlyCollectionWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableReadOnlyCollectionWrapper.java
new file mode 100644
index 0000000..3bec907
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableReadOnlyCollectionWrapper.java
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.Collection;
+import java.util.Iterator;
+import org.apache.ignite.internal.util.GridSerializableCollection;
+import org.apache.ignite.internal.util.GridSerializableIterator;
+import org.apache.ignite.internal.util.lang.GridFunc;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Collection wrapper.
+ * A read-only view will be created over the element and given
+ * collections and no copying will happen.
+ *
+ * @param <T> Element type.
+ */
+public class GridSerializableReadOnlyCollectionWrapper<T> extends GridSerializableCollection<T> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** Collection. */
+ private final Collection<T> collection;
+
+ /** First element in the collection. */
+ private final T firstElement;
+
+ /**
+ * @param collection Collection to wrap.
+ * @param firstElement First element.
+ */
+ public GridSerializableReadOnlyCollectionWrapper(@NotNull Collection<T> collection, @NotNull T firstElement) {
+ this.collection = collection;
+ this.firstElement = firstElement;
+ }
+
+ /** {@inheritDoc} */
+ @NotNull
+ @Override public Iterator<T> iterator() {
+ return new GridSerializableIterator<T>() {
+ private Iterator<T> it;
+
+ @Override public boolean hasNext() {
+ return it == null || it.hasNext();
+ }
+
+ @Nullable @Override public T next() {
+ if (it == null) {
+ it = collection.iterator();
+
+ return firstElement;
+ }
+
+ return it.next();
+ }
+
+ @Override public void remove() {
+ throw new UnsupportedOperationException();
+ }
+ };
+ }
+
+ /** {@inheritDoc} */
+ @Override public int size() {
+ return collection.size() + 1;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object obj) {
+ return obj instanceof Collection && GridFunc.eqNotOrdered(this, (Collection)obj);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(GridSerializableReadOnlyCollectionWrapper.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableReadOnlyTwoCollectionsWrapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableReadOnlyTwoCollectionsWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableReadOnlyTwoCollectionsWrapper.java
new file mode 100644
index 0000000..5747d2c
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/GridSerializableReadOnlyTwoCollectionsWrapper.java
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.Collection;
+import java.util.Iterator;
+import org.apache.ignite.internal.util.GridSerializableCollection;
+import org.apache.ignite.internal.util.GridSerializableIterator;
+import org.apache.ignite.internal.util.lang.GridFunc;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Collections wrapper.
+ * A read-only view will be created over the element and given
+ * collections and no copying will happen.
+ *
+ * @param <T> Element type.
+ */
+public class GridSerializableReadOnlyTwoCollectionsWrapper<T> extends GridSerializableCollection<T> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** First collection. */
+ private final Collection<T> c1;
+
+ /** SecondCollection. */
+ private final Collection<T> c2;
+
+ /**
+ * @param c1 First collection.
+ * @param c2 SecondCollection.
+ */
+ public GridSerializableReadOnlyTwoCollectionsWrapper(Collection<T> c1, Collection<T> c2) {
+ this.c1 = c1;
+ this.c2 = c2;
+ }
+
+ /** {@inheritDoc} */
+ @NotNull
+ @Override public Iterator<T> iterator() {
+ return new GridSerializableIterator<T>() {
+ private Iterator<T> it1 = c1.iterator();
+ private Iterator<T> it2 = c2.iterator();
+
+ @Override public boolean hasNext() {
+ if (it1 != null)
+ if (!it1.hasNext())
+ it1 = null;
+ else
+ return true;
+
+ return it2.hasNext();
+ }
+
+ @Override public T next() {
+ return it1 != null ? it1.next() : it2.next();
+ }
+
+ @Override public void remove() {
+ throw new UnsupportedOperationException();
+ }
+ };
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean contains(Object o) {
+ return c1.contains(o) || c2.contains(o);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int size() {
+ return c1.size() + c2.size();
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object obj) {
+ return obj instanceof Collection && GridFunc.eqNotOrdered(this, (Collection<?>)obj);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(GridSerializableReadOnlyTwoCollectionsWrapper.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableArrayListFactory.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableArrayListFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableArrayListFactory.java
new file mode 100644
index 0000000..017397d
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableArrayListFactory.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteCallable;
+
+/**
+ * Array list factory.
+ */
+public class IgniteCallableArrayListFactory implements IgniteCallable<List> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override public ArrayList call() {
+ return new ArrayList();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteCallableArrayListFactory.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableAtomicBooleanFactory.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableAtomicBooleanFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableAtomicBooleanFactory.java
new file mode 100644
index 0000000..a935471
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableAtomicBooleanFactory.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteCallable;
+
+/**
+ * Atomic boolean factory.
+ */
+public class IgniteCallableAtomicBooleanFactory implements IgniteCallable<AtomicBoolean> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override public AtomicBoolean call() {
+ return new AtomicBoolean();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteCallableAtomicBooleanFactory.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableAtomicIntegerFactory.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableAtomicIntegerFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableAtomicIntegerFactory.java
new file mode 100644
index 0000000..9a8df06
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableAtomicIntegerFactory.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteCallable;
+
+/**
+ * Atomic integer factory.
+ */
+public class IgniteCallableAtomicIntegerFactory implements IgniteCallable<AtomicInteger> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override public AtomicInteger call() {
+ return new AtomicInteger(0);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteCallableAtomicIntegerFactory.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableAtomicLongFactory.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableAtomicLongFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableAtomicLongFactory.java
new file mode 100644
index 0000000..7499c29
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableAtomicLongFactory.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.concurrent.atomic.AtomicLong;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteCallable;
+
+/**
+ * Atomic long factory.
+ */
+public class IgniteCallableAtomicLongFactory implements IgniteCallable<AtomicLong> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override public AtomicLong call() {
+ return new AtomicLong(0);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteCallableAtomicLongFactory.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableAtomicReferenceFactory.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableAtomicReferenceFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableAtomicReferenceFactory.java
new file mode 100644
index 0000000..ed0ff58
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableAtomicReferenceFactory.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.concurrent.atomic.AtomicReference;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteCallable;
+
+/**
+ * Atomic reference factory.
+ */
+public class IgniteCallableAtomicReferenceFactory implements IgniteCallable<AtomicReference> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override public AtomicReference call() {
+ return new AtomicReference();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteCallableAtomicReferenceFactory.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableConcurrentHashMapFactory.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableConcurrentHashMapFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableConcurrentHashMapFactory.java
new file mode 100644
index 0000000..ca50a0b
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableConcurrentHashMapFactory.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.concurrent.ConcurrentMap;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteCallable;
+import org.jsr166.ConcurrentHashMap8;
+
+/**
+ * Concurrent hash map factory.
+ */
+public class IgniteCallableConcurrentHashMapFactory implements IgniteCallable<ConcurrentMap> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override public ConcurrentMap call() {
+ return new ConcurrentHashMap8();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteCallableConcurrentHashMapFactory.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableConcurrentHashSetFactory.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableConcurrentHashSetFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableConcurrentHashSetFactory.java
new file mode 100644
index 0000000..0a52e4d
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableConcurrentHashSetFactory.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import org.apache.ignite.internal.util.GridConcurrentHashSet;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteCallable;
+
+/**
+ * Concurrent hash set factory.
+ */
+public class IgniteCallableConcurrentHashSetFactory implements IgniteCallable<GridConcurrentHashSet> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override public GridConcurrentHashSet call() {
+ return new GridConcurrentHashSet();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteCallableConcurrentHashSetFactory.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableDequeFactory.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableDequeFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableDequeFactory.java
new file mode 100644
index 0000000..9dcc3b5
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableDequeFactory.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteCallable;
+import org.jsr166.ConcurrentLinkedDeque8;
+
+/**
+ * Deque factory.
+ */
+public class IgniteCallableDequeFactory implements IgniteCallable<ConcurrentLinkedDeque8> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override public ConcurrentLinkedDeque8 call() {
+ return new ConcurrentLinkedDeque8();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteCallableDequeFactory.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableHashMapFactory.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableHashMapFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableHashMapFactory.java
new file mode 100644
index 0000000..b361354
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableHashMapFactory.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteCallable;
+
+/**
+ * Hash map factory.
+ */
+public class IgniteCallableHashMapFactory implements IgniteCallable<Map> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override public Map call() {
+ return new HashMap();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteCallableHashMapFactory.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableHashSetFactory.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableHashSetFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableHashSetFactory.java
new file mode 100644
index 0000000..22d0d10
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableHashSetFactory.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.HashSet;
+import java.util.Set;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteCallable;
+
+/**
+ * Hash set factory.
+ */
+public class IgniteCallableHashSetFactory implements IgniteCallable<Set> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override public Set call() {
+ return new HashSet();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteCallableHashSetFactory.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableLinkedListFactory.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableLinkedListFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableLinkedListFactory.java
new file mode 100644
index 0000000..34c4eab
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteCallableLinkedListFactory.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.LinkedList;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteCallable;
+
+/**
+ * Linked list factory.
+ */
+public class IgniteCallableLinkedListFactory implements IgniteCallable<LinkedList> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override public LinkedList call() {
+ return new LinkedList();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteCallableLinkedListFactory.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureCacheGet.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureCacheGet.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureCacheGet.java
new file mode 100644
index 0000000..2fef35e
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureCacheGet.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import javax.cache.Cache;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteClosure;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Cache entry to get-value transformer closure.
+ */
+public class IgniteClosureCacheGet implements IgniteClosure {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @SuppressWarnings({"unchecked"})
+ @Nullable @Override public Object apply(Object o) {
+ return ((Cache.Entry)o).getValue();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteClosureCacheGet.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureCacheGetKey.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureCacheGetKey.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureCacheGetKey.java
new file mode 100644
index 0000000..e9cb267
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureCacheGetKey.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import javax.cache.Cache;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteClosure;
+
+/**
+ * Map entry to key transformer closure.
+ */
+public class IgniteClosureCacheGetKey implements IgniteClosure {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override public Object apply(Object o) {
+ return ((Cache.Entry)o).getKey();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteClosureCacheGetKey.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureClusterNodeGetId.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureClusterNodeGetId.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureClusterNodeGetId.java
new file mode 100644
index 0000000..155b075
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureClusterNodeGetId.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.UUID;
+import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteClosure;
+
+/**
+ * Grid node to node ID transformer closure.
+ */
+public class IgniteClosureClusterNodeGetId implements IgniteClosure<ClusterNode, UUID> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override public UUID apply(ClusterNode n) {
+ return n.id();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteClosureClusterNodeGetId.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureClusterNodeGetId8.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureClusterNodeGetId8.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureClusterNodeGetId8.java
new file mode 100644
index 0000000..af1641e
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureClusterNodeGetId8.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.lang.IgniteClosure;
+
+/**
+ * Grid node to node ID8 transformer closure.
+ */
+public class IgniteClosureClusterNodeGetId8 implements IgniteClosure<ClusterNode, String> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override public String apply(ClusterNode n) {
+ return U.id8(n.id());
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteClosureClusterNodeGetId8.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureIdentity.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureIdentity.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureIdentity.java
new file mode 100644
index 0000000..52d872a
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureIdentity.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteClosure;
+
+/**
+ * Identity closure.
+ */
+public class IgniteClosureIdentity implements IgniteClosure {
+ /** */
+ private static final long serialVersionUID = -6338573080046225172L;
+
+ /** {@inheritDoc} */
+ @Override public Object apply(Object o) {
+ return o;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteClosureIdentity.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureToString.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureToString.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureToString.java
new file mode 100644
index 0000000..a5adfea
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureToString.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import org.apache.ignite.internal.util.typedef.C1;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Closure that return {@code toString()} value for its free variable.
+ *
+ * @param <T> Type of the free variable for the closure.
+ */
+public class IgniteClosureToString<T> implements C1<T, String> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override public String apply(@Nullable T t) {
+ return String.valueOf(t); // This is null-safe.
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteClosureToString.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureUUIDToId8Transformer.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureUUIDToId8Transformer.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureUUIDToId8Transformer.java
new file mode 100644
index 0000000..fc5fc04
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteClosureUUIDToId8Transformer.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.UUID;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.lang.IgniteClosure;
+
+/**
+ * UUID to ID8 transformer closure.
+ */
+public class IgniteClosureUUIDToId8Transformer implements IgniteClosure<UUID, String> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override public String apply(UUID id) {
+ return U.id8(id);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteClosureUUIDToId8Transformer.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteOutClosureWrapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteOutClosureWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteOutClosureWrapper.java
new file mode 100644
index 0000000..fdf1245
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgniteOutClosureWrapper.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgniteClosure;
+import org.apache.ignite.lang.IgniteOutClosure;
+
+/**
+ * Wraps given closure.
+ *
+ * @param <T> Input type.
+ * @param <R> Output type.
+ */
+public class IgniteOutClosureWrapper<T, R> implements IgniteOutClosure<R> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** */
+ private final IgniteClosure<? super T, R> closure;
+
+ /** */
+ private final T closureArgument;
+
+ /**
+ * @param closure Closure
+ * @param closureArgument Parameter
+ */
+ public IgniteOutClosureWrapper(IgniteClosure<? super T, R> closure, T closureArgument) {
+ this.closure = closure;
+ this.closureArgument = closureArgument;
+ }
+
+ /** {@inheritDoc} */
+ @Override public R apply() {
+ return closure.apply(closureArgument);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteOutClosureWrapper.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgnitePredicateAlwaysFalse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgnitePredicateAlwaysFalse.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgnitePredicateAlwaysFalse.java
new file mode 100644
index 0000000..297e749
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgnitePredicateAlwaysFalse.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgnitePredicate;
+
+/**
+ * Defines a predicate which accepts a parameter and always returns {@code false}
+ *
+ * @param <E> Type of predicate parameter.
+ */
+public class IgnitePredicateAlwaysFalse<E> implements IgnitePredicate<E> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /**
+ * Predicate body.
+ *
+ * @param e Predicate parameter.
+ * @return Always <code>false</code>
+ */
+ @Override public boolean apply(E e) {
+ return true;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgnitePredicateAlwaysFalse.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgnitePredicateAlwaysTrue.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgnitePredicateAlwaysTrue.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgnitePredicateAlwaysTrue.java
new file mode 100644
index 0000000..ff0f96e
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgnitePredicateAlwaysTrue.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgnitePredicate;
+
+/**
+ * Defines a predicate which accepts a parameter and always returns {@code true}
+ *
+ * @param <E> Type of predicate parameter.
+ */
+public class IgnitePredicateAlwaysTrue<E> implements IgnitePredicate<E> {
+ /** */
+ private static final long serialVersionUID = 6101914246981105862L;
+
+ /**
+ * Predicate body.
+ *
+ * @param e Predicate parameter.
+ * @return Always <code>true</code>.
+ */
+ @Override public boolean apply(E e) {
+ return true;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgnitePredicateAlwaysTrue.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgnitePredicateCacheHasPeek.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgnitePredicateCacheHasPeek.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgnitePredicateCacheHasPeek.java
new file mode 100644
index 0000000..b286f50
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgnitePredicateCacheHasPeek.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import javax.cache.Cache;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgnitePredicate;
+
+/**
+ * Cache entry has-peek-value predicate.
+ */
+public class IgnitePredicateCacheHasPeek implements IgnitePredicate {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @SuppressWarnings({"unchecked"})
+ @Override public boolean apply(Object o) {
+ return ((Cache.Entry)o).getValue() != null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgnitePredicateCacheHasPeek.class, this);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9165b0d6/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgnitePredicateContainNodeId.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgnitePredicateContainNodeId.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgnitePredicateContainNodeId.java
new file mode 100644
index 0000000..0911e37
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/IgnitePredicateContainNodeId.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.ignite.internal.util.lang.gridfunc;
+
+import java.util.Collection;
+import java.util.UUID;
+import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.lang.IgnitePredicate;
+
+/**
+ * Grid node predicate evaluating on the given node IDs.
+ */
+public class IgnitePredicateContainNodeId<T extends ClusterNode> implements IgnitePredicate<T> {
+ /** */
+ private static final long serialVersionUID = -5664060422647374863L;
+
+ /** */
+ private final Collection<UUID> nodeIds;
+
+ /**
+ * @param nodeIds (Collection)
+ */
+ public IgnitePredicateContainNodeId(Collection<UUID> nodeIds) {
+ this.nodeIds = nodeIds;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean apply(ClusterNode e) {
+ return nodeIds.contains(e.id());
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgnitePredicateContainNodeId.class, this);
+ }
+}