Skip to content

Add method to Arguments for getting payloads #4144

@onacit

Description

@onacit

Say, I have the following methods.

    class Some {

        static Stream<Arguments> getNameAndAgeArgumentsStream() {
            return Stream.of(
                    Arguments.of(
                            Named.of("Whatever", "John"), // <<<<<<<<<<<<<<<<<
                            1
                    );
        }
    }

    class Other {

        static Stream<Arguments> getNameAndAgeArgumentsStream() {
            return Stream.of(
                    Arguments.of(
                            "Jane",  // <<<<<<<<<<<<<<<<<<<<<<<
                            1
                    );
        }
    }

Now I want to use those two methods in other class.

    class Another {

        static Stream<Arguments> getPrefixedNameAndAgeArguemntsStream() {
            return Stream.concat(
                            Some.getNameAndAgeArgumentsStream(),
                            Other.getNameAndAgeArgumentsStream()
                    )
                    .map(a -> {
                        var arguments = a.get();
                        var name = arguments[0] instanceof Named ? ((Named<String>) arguments[0]).getPayload() : arguments[0];
                        return Arguments.of(
                                "prefix" + name,
                                arguments[1]
                        );
                    });
        }
    }

I had to use a method looks like this.

    public static <T> T payload(final Object argument) {
        Objects.requireNonNull(argument, "argument is null");
        if (argument instanceof Named<?>) {
            return payload(((Named<?>) argument).getPayload());
        }
        return (T) argument;
    }

Deliverables

  • Add a method returns ultimate payload values from an Arguments, say, getPayloads()[Ljava.lang.Object

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions