Class PluginDefaultGroovyMethods


  • public class PluginDefaultGroovyMethods
    extends DefaultGroovyMethodsSupport
    Defines new Groovy methods which appear on standard Java 8 classes within the Groovy environment.
    Since:
    2.5.0
    • Method Detail

      • asBoolean

        public static boolean asBoolean​(Optional<?> optional)
        Coerce an Optional instance to a boolean value.
         assert !Optional.empty().asBoolean()
         assert Optional.of(1234).asBoolean()
         
        Parameters:
        optional - the Optional
        Returns:
        true if a value is present, otherwise false
        Since:
        2.5.0
      • get

        public static int get​(OptionalInt self)
        If a value is present in the OptionalInt, returns the value, otherwise throws NoSuchElementException.
         assert OptionalInt.of(1234).get() == 1234
         
        Since:
        3.0.0
      • get

        public static long get​(OptionalLong self)
        If a value is present in the OptionalLong, returns the value, otherwise throws NoSuchElementException.
         assert OptionalLong.of(1234L).get() == 1234L
         
        Since:
        3.0.0
      • get

        public static double get​(OptionalDouble self)
        If a value is present in the OptionalDouble, returns the value, otherwise throws NoSuchElementException.
         assert OptionalDouble.of(Math.PI).get() == Math.PI
         
        Since:
        3.0.0
      • filter

        public static <T> Optional<T> filter​(Optional<?> self,
                                             Class<T> type)
        Tests given value against specified type and changes generics of result. This is equivalent to: self.filter(it -> it instanceof Type).map(it -> (Type) it)
         assert !Optional.empty().filter(Number).isPresent()
         assert !Optional.of('x').filter(Number).isPresent()
         assert Optional.of(1234).filter(Number).isPresent()
         assert Optional.of(1234).filter(Number).get().equals(1234)
         
        Since:
        3.0.0
      • filter

        public static OptionalInt filter​(OptionalInt self,
                                         IntPredicate test)
        If a value is present in the OptionalInt, tests the value using the given predicate and returns the optional if the test returns true or else empty.
         assert !OptionalInt.empty().filter(i -> true).isPresent()
         assert  OptionalInt.of(1234).filter(i -> true).isPresent()
         assert !OptionalInt.of(1234).filter(i -> false).isPresent()
         assert  OptionalInt.of(1234).filter(i -> true).getAsInt() == 1234
         
        Since:
        3.0.0
      • filter

        public static OptionalLong filter​(OptionalLong self,
                                          LongPredicate test)
        If a value is present in the OptionalLong, tests the value using the given predicate and returns the optional if the test returns true or else empty.
         assert !OptionalLong.empty().filter(n -> true).isPresent()
         assert  OptionalLong.of(123L).filter(n -> true).isPresent()
         assert !OptionalLong.of(123L).filter(n -> false).isPresent()
         assert  OptionalLong.of(123L).filter(n -> true).getAsLong() == 123L
         
        Since:
        3.0.0
      • filter

        public static OptionalDouble filter​(OptionalDouble self,
                                            DoublePredicate test)
        If a value is present in the OptionalDouble, tests the value using the given predicate and returns the optional if the test returns true or empty otherwise.
         assert !OptionalDouble.empty().filter(n -> true).isPresent()
         assert  OptionalDouble.of(Math.PI).filter(n -> true).isPresent()
         assert !OptionalDouble.of(Math.PI).filter(n -> false).isPresent()
         assert  OptionalDouble.of(Math.PI).filter(n -> true).getAsDouble() == Math.PI
         
        Since:
        3.0.0
      • mapToObj

        public static <T> Optional<T> mapToObj​(OptionalInt self,
                                               IntFunction<? extends T> mapper)
        If a value is present in the OptionalInt, returns an Optional consisting of the result of applying the given function to the value or else empty.
         assert !OptionalInt.empty().mapToObj(x -> new Object()).isPresent()
         assert  OptionalInt.of(1234).mapToObj(x -> new Object()).isPresent()
         assert !OptionalInt.of(1234).mapToObj(x -> null).isPresent()
         assert  OptionalInt.of(1234).mapToObj(Integer::toString).get() == '1234'
         
        Since:
        3.0.0
      • mapToObj

        public static <T> Optional<T> mapToObj​(OptionalLong self,
                                               LongFunction<? extends T> mapper)
        If a value is present in the OptionalLong, returns an Optional consisting of the result of applying the given function to the value or else empty.
         assert !OptionalLong.empty().mapToObj(x -> new Object()).isPresent()
         assert  OptionalLong.of(123L).mapToObj(x -> new Object()).isPresent()
         assert !OptionalLong.of(123L).mapToObj(x -> null).isPresent()
         assert  OptionalLong.of(1234L).mapToObj(Long::toString).get() == '1234'
         
        Since:
        3.0.0
      • mapToObj

        public static <T> Optional<T> mapToObj​(OptionalDouble self,
                                               DoubleFunction<? extends T> mapper)
        If a value is present in the OptionalDouble, returns an Optional consisting of the result of applying the given function to the value or else empty.
         assert !OptionalDouble.empty().mapToObj(x -> new Object()).isPresent()
         assert  OptionalDouble.of(Math.PI).mapToObj(x -> new Object()).isPresent()
         assert !OptionalDouble.of(Math.PI).mapToObj(x -> null).isPresent()
         assert  OptionalDouble.of(Math.PI).mapToObj(Double::toString).get().startsWith('3.14')
         
        Since:
        3.0.0
      • mapToInt

        public static <T> OptionalInt mapToInt​(Optional<T> self,
                                               ToIntFunction<? super T> mapper)
        If a value is present in the OptionalInt, returns an OptionalInt consisting of the result of applying the given function to the value or else empty.
         assert !Optional.empty().mapToInt(x -> 42).isPresent()
         assert  Optional.of('x').mapToInt(x -> 42).getAsInt() == 42
         
        Since:
        3.0.0
      • mapToLong

        public static <T> OptionalLong mapToLong​(Optional<T> self,
                                                 ToLongFunction<? super T> mapper)
        If a value is present in the OptionalLong, returns an OptionalLong consisting of the result of applying the given function to the value or else empty.
         assert !Optional.empty().mapToLong(x -> 42L).isPresent()
         assert  Optional.of('x').mapToLong(x -> 42L).getAsLong() == 42L
         
        Since:
        3.0.0
      • mapToDouble

        public static <T> OptionalDouble mapToDouble​(Optional<T> self,
                                                     ToDoubleFunction<? super T> mapper)
        If a value is present in the OptionalDouble, returns an OptionalDouble consisting of the result of applying the given function to the value or else empty.
         assert !Optional.empty().mapToDouble(x -> Math.PI).isPresent()
         assert  Optional.of('x').mapToDouble(x -> Math.PI).getAsDouble() == Math.PI
         
        Since:
        3.0.0
      • collect

        public static <S,​T> Optional<T> collect​(Optional<S> self,
                                                      Closure<T> transform)
        If the optional contains a value, returns an optional containing the transformed value obtained using the transform closure or otherwise an empty optional.
         assert Optional.of("foobar").collect{ it.size() }.get() == 6
         assert !Optional.empty().collect{ it.size() }.isPresent()
         
        Parameters:
        self - an Optional
        transform - the closure used to transform the optional value if present
        Returns:
        an Optional containing the transformed value or empty if the optional is empty or the transform returns null
        Since:
        3.0.0
      • collect

        public static <S,​T> Future<T> collect​(Future<S> self,
                                                    Closure<T> transform)
        Returns a Future asynchronously returning a transformed result.
         import java.util.concurrent.*
         def executor = Executors.newSingleThreadExecutor()
         Future foobar = executor.submit{ "foobar" }
         Future foobarSize = foobar.collect{ it.size() }
         assert foobarSize.get() == 6
         executor.shutdown()
         
        Parameters:
        self - a Future
        transform - the closure used to transform the Future value
        Returns:
        a Future allowing the transformed value to be obtained asynchronously
        Since:
        3.0.0
      • next

        public static Object next​(Enum self)
        Overloads the ++ operator for enums. It will invoke Groovy's default next behaviour for enums that do not have their own next method.
        Parameters:
        self - an Enum
        Returns:
        the next defined enum from the enum class
        Since:
        1.5.2
      • previous

        public static Object previous​(Enum self)
        Overloads the -- operator for enums. It will invoke Groovy's default previous behaviour for enums that do not have their own previous method.
        Parameters:
        self - an Enum
        Returns:
        the previous defined enum from the enum class
        Since:
        1.5.2
      • leftShift

        public static StringBuilder leftShift​(StringBuilder self,
                                              Object value)
        Overloads the left shift operator to provide an easy way to append multiple objects as string representations to a StringBuilder.
        Parameters:
        self - a StringBuilder
        value - a value to append
        Returns:
        the StringBuilder on which this operation was invoked
        Since:
        1.5.2
      • putAt

        public static void putAt​(StringBuilder self,
                                 IntRange range,
                                 Object value)
        Supports the range subscript operator for StringBuilder. Index values are treated as characters within the builder.
        Parameters:
        self - a StringBuilder
        range - a Range
        value - the object that's toString() will be inserted
        Since:
        1.5.2
      • putAt

        public static void putAt​(StringBuilder self,
                                 EmptyRange range,
                                 Object value)
        Supports the range subscript operator for StringBuilder.
        Parameters:
        self - a StringBuilder
        range - a Range
        value - the object that's toString() will be inserted
        Since:
        1.5.2
      • plus

        public static String plus​(StringBuilder self,
                                  String value)
        Appends a String to this StringBuilder.
        Parameters:
        self - a StringBuilder
        value - a String
        Returns:
        a String
        Since:
        1.5.2
      • toArray

        public static <T> T[] toArray​(Stream<? extends T> self,
                                      Class<T> type)
        Returns an array containing the elements of the stream.
         import static groovy.test.GroovyAssert.shouldFail
        
         assert Arrays.equals([].stream().toArray(Object), new Object[0])
         assert Arrays.equals([].stream().toArray(String), new String[0])
         assert Arrays.equals([].stream().toArray(String[]), new String[0][])
         assert Arrays.equals(['x'].stream().toArray(Object), ['x'].toArray())
         assert Arrays.equals(['x'].stream().toArray(String), ['x'] as String[])
         assert Arrays.deepEquals([['x'] as String[]].stream().toArray(String[]), [['x'] as String[]] as String[][])
         assert Arrays.equals(['x'].stream().toArray(CharSequence), ['x'] as CharSequence[])
        
         shouldFail(ArrayStoreException) {
             ['x'].stream().toArray(Thread)
         }
        
         shouldFail(IllegalArgumentException) {
             ['x'].stream().toArray((Class) null)
         }
        
         // Stream#toArray(IntFunction) should still be used for closure literal:
         assert Arrays.equals(['x'].stream().toArray { n -> new String[n] }, ['x'] as String[])
        
         // Stream#toArray(IntFunction) should still be used for method reference:
         assert Arrays.equals(['x'].stream().toArray(String[]::new), ['x'] as String[])
         
        Parameters:
        self - the stream
        type - the array element type
        Since:
        3.0.4
      • toList

        public static <T> List<T> toList​(Stream<T> self)
        Accumulates the elements of stream into a new List.
        Type Parameters:
        T - the type of element
        Parameters:
        self - the stream
        Returns:
        a new java.util.List instance
        Since:
        2.5.0
      • toSet

        public static <T> Set<T> toSet​(Stream<T> self)
        Accumulates the elements of stream into a new Set.
        Type Parameters:
        T - the type of element
        Parameters:
        self - the stream
        Returns:
        a new java.util.Set instance
        Since:
        2.5.0
      • toList

        public static <T> List<T> toList​(BaseStream<T,​? extends BaseStream> self)
        Accumulates the elements of stream into a new List.
        Type Parameters:
        T - the type of element
        Parameters:
        self - the java.util.stream.BaseStream
        Returns:
        a new java.util.List instance
        Since:
        2.5.0
      • toSet

        public static <T> Set<T> toSet​(BaseStream<T,​? extends BaseStream> self)
        Accumulates the elements of stream into a new Set.
        Type Parameters:
        T - the type of element
        Parameters:
        self - the java.util.stream.BaseStream
        Returns:
        a new java.util.Set instance
        Since:
        2.5.0
      • stream

        public static <T> Stream<T> stream​(NullObject self)
        Returns an empty sequential Stream.
         def item = null
         assert item.stream().toList() == []
         assert !item.stream().findFirst().isPresent()
         
        Since:
        3.0.0
      • stream

        public static <T> Stream<T> stream​(T self)
        Returns a sequential Stream containing a single element.
         def item = 'string'
         assert item.stream().toList() == ['string']
         assert item.stream().findFirst().isPresent()
         
        Since:
        3.0.0
      • stream

        public static <T> Stream<T> stream​(T[] self)
        Returns a sequential Stream with the specified array as its source.
        Type Parameters:
        T - The type of the array elements
        Parameters:
        self - The array, assumed to be unmodified during use
        Returns:
        a Stream for the array
        Since:
        2.5.0
      • stream

        public static Stream<Integer> stream​(int[] self)
        Returns a sequential Stream with the specified array as its source.
        Parameters:
        self - The array, assumed to be unmodified during use
        Returns:
        a Stream for the array
        Since:
        2.5.0
      • stream

        public static Stream<Long> stream​(long[] self)
        Returns a sequential Stream with the specified array as its source.
        Parameters:
        self - The array, assumed to be unmodified during use
        Returns:
        a Stream for the array
        Since:
        2.5.0
      • stream

        public static Stream<Double> stream​(double[] self)
        Returns a sequential Stream with the specified array as its source.
        Parameters:
        self - The array, assumed to be unmodified during use
        Returns:
        a Stream for the array
        Since:
        2.5.0
      • stream

        public static Stream<Character> stream​(char[] self)
        Returns a sequential Stream with the specified array as its source.
        Parameters:
        self - The array, assumed to be unmodified during use
        Returns:
        a Stream for the array
        Since:
        2.5.0
      • stream

        public static Stream<Byte> stream​(byte[] self)
        Returns a sequential Stream with the specified array as its source.
        Parameters:
        self - The array, assumed to be unmodified during use
        Returns:
        a Stream for the array
        Since:
        2.5.0
      • stream

        public static Stream<Short> stream​(short[] self)
        Returns a sequential Stream with the specified array as its source.
        Parameters:
        self - The array, assumed to be unmodified during use
        Returns:
        a Stream for the array
        Since:
        2.5.0
      • stream

        public static Stream<Boolean> stream​(boolean[] self)
        Returns a sequential Stream with the specified array as its source.
        Parameters:
        self - The array, assumed to be unmodified during use
        Returns:
        a Stream for the array
        Since:
        2.5.0
      • stream

        public static Stream<Float> stream​(float[] self)
        Returns a sequential Stream with the specified array as its source.
        Parameters:
        self - The array, assumed to be unmodified during use
        Returns:
        a Stream for the array
        Since:
        2.5.0
      • stream

        public static <T> Stream<T> stream​(Enumeration<T> self)
        Returns a sequential Stream with the specified element(s) as its source.
         def tokens = new StringTokenizer('one two')
         assert tokens.stream().toList() == ['one', 'two']
         
        Since:
        3.0.0
      • stream

        public static <T> Stream<T> stream​(Iterable<T> self)
        Returns a sequential Stream with the specified element(s) as its source.
         class Items implements Iterable {
           Iterator iterator() {
             ['one', 'two'].iterator()
           }
         }
         def items = new Items()
         assert items.stream().toList() == ['one', 'two']
         
        Since:
        3.0.0
      • stream

        public static <T> Stream<T> stream​(Iterator<T> self)
        Returns a sequential Stream with the specified element(s) as its source.
         [].iterator().stream().toList().isEmpty()
         ['one', 'two'].iterator().stream().toList() == ['one', 'two']
         
        Since:
        3.0.0
      • stream

        public static <T> Stream<T> stream​(Spliterator<T> self)
        Returns a sequential Stream with the specified element(s) as its source.
         [].spliterator().stream().toList().isEmpty()
         ['one', 'two'].spliterator().stream().toList() == ['one', 'two']
         
        Since:
        3.0.0
      • stream

        public static <T> Stream<T> stream​(Optional<T> self)
        If a value is present in the Optional, returns a Stream with the value as its source or else an empty stream.
        Since:
        3.0.0
      • orOptional

        public static <T> Optional<T> orOptional​(Optional<T> self,
                                                 Supplier<? extends Optional<? extends T>> supplier)
        Provide similar functionality to JDK9 or on JDK8.