Class ReturnDefaultValueAction

  • All Implemented Interfaces:
    org.hamcrest.SelfDescribing, Action, Invokable

    public class ReturnDefaultValueAction
    extends java.lang.Object
    implements Action
    Returns a default value for the invoked method's result type.
    • Returns nothing from void methods.
    • Returns zero or false results for primitive types.
    • Returns zero length instances for arrays and strings.
    • Returns empty instances for collections and maps types in java.util.
    • Returns imposterised Null Objects for types that can be imposterised by the action's Imposteriser.
    • Otherwise returns null.
    The default value can be overridden for specific types.
    • Field Detail

      • CONCRETE_COLLECTION_TYPES

        private static final java.lang.Class<?>[] CONCRETE_COLLECTION_TYPES
      • resultValuesByType

        private final java.util.Map<java.lang.Class<?>,​java.lang.Object> resultValuesByType
    • Constructor Detail

      • ReturnDefaultValueAction

        public ReturnDefaultValueAction​(Imposteriser imposteriser,
                                        java.util.Map<java.lang.Class<?>,​java.lang.Object> typeToResultValue)
      • ReturnDefaultValueAction

        public ReturnDefaultValueAction​(Imposteriser imposteriser)
      • ReturnDefaultValueAction

        public ReturnDefaultValueAction()
    • Method Detail

      • setImposteriser

        public void setImposteriser​(Imposteriser newImposteriser)
      • describeTo

        public void describeTo​(org.hamcrest.Description description)
        Specified by:
        describeTo in interface org.hamcrest.SelfDescribing
      • addResult

        public void addResult​(java.lang.Class<?> resultType,
                              java.lang.Object resultValue)
      • invoke

        public java.lang.Object invoke​(Invocation invocation)
                                throws java.lang.Throwable
        Description copied from interface: Invokable
        Performs an action in response to an invocation.
        Specified by:
        invoke in interface Invokable
        Parameters:
        invocation - The invocation to perform.
        Returns:
        The result of the invocation, if not throwing an exception. Must return null if the invoked method has a void return type.
        Throws:
        java.lang.Throwable - An exception to be thrown to the caller, if not returning a value. Any checked exception thrown must be in the throws list of the invoked method.
      • collectionOrMapInstanceFor

        private static java.lang.Object collectionOrMapInstanceFor​(java.lang.Class<?> returnType)
                                                            throws java.lang.Throwable
        Throws:
        java.lang.Throwable
      • instanceForCollectionType

        private static java.lang.Object instanceForCollectionType​(java.lang.Class<?> type)
                                                           throws java.lang.Throwable
        Throws:
        java.lang.Throwable
      • isCollectionOrMap

        private static boolean isCollectionOrMap​(java.lang.Class<?> type)
      • cannotCreateNewInstance

        private static boolean cannotCreateNewInstance​(java.lang.Class<?> returnType)
      • createDefaultResults

        protected static java.util.Map<java.lang.Class<?>,​java.lang.Object> createDefaultResults()