All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.axonframework.test.FixtureResourceParameterResolverFactory Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2010-2022. Axon Framework
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.axonframework.test;

import org.axonframework.common.Priority;
import org.axonframework.messaging.Message;
import org.axonframework.messaging.annotation.ParameterResolver;
import org.axonframework.messaging.annotation.ParameterResolverFactory;

import java.lang.reflect.Executable;
import java.lang.reflect.Parameter;

import static org.axonframework.common.Priority.LAST;

/**
 * ParameterResolverFactory implementation for use in test cases that prevent that all declared resources on message
 * handlers need to be configured. This ParameterResolverFactory will return a parameter resolver for any parameter,
 * but will fail when that resolver is being used.
 * 

* Because of this behavior, it is important that any resource resolvers doing actual resolution are executed before * this instance. * * @author Allard Buijze * @since 2.1 */ @Priority(LAST) public final class FixtureResourceParameterResolverFactory implements ParameterResolverFactory { @Override public ParameterResolver createInstance(Executable executable, Parameter[] parameters, int parameterIndex) { return new FailingParameterResolver(parameters[parameterIndex].getType()); } private static class FailingParameterResolver implements ParameterResolver { private final Class parameterType; public FailingParameterResolver(Class parameterType) { this.parameterType = parameterType; } @Override public Object resolveParameterValue(Message message) { throw new FixtureExecutionException("No resource of type [" + parameterType.getName() + "] has been registered. It is required for one of the handlers being executed."); } @Override public boolean matches(Message message) { return true; } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy