Home / Class/ Discoverer Class — spring-boot Architecture

Discoverer Class — spring-boot Architecture

Architecture documentation for the Discoverer class in ValueObjectBinder.java from the spring-boot codebase.

Entity Profile

Relationship Graph

Source Code

core/spring-boot/src/main/java/org/springframework/boot/context/properties/bind/ValueObjectBinder.java lines 399–439

	static final class Discoverer implements ParameterNameDiscoverer {

		private static final ParameterNameDiscoverer DEFAULT_DELEGATE = new DefaultParameterNameDiscoverer();

		private static final ParameterNameDiscoverer LENIENT = new Discoverer(DEFAULT_DELEGATE, (message) -> {
		});

		private static final ParameterNameDiscoverer STRICT = new Discoverer(DEFAULT_DELEGATE, (message) -> {
			throw new IllegalStateException(message.toString());
		});

		private final ParameterNameDiscoverer delegate;

		private final Consumer<LogMessage> noParameterNamesHandler;

		private Discoverer(ParameterNameDiscoverer delegate, Consumer<LogMessage> noParameterNamesHandler) {
			this.delegate = delegate;
			this.noParameterNamesHandler = noParameterNamesHandler;
		}

		@Override
		public String[] getParameterNames(Method method) {
			throw new UnsupportedOperationException();
		}

		@Override
		public @Nullable String @Nullable [] getParameterNames(Constructor<?> constructor) {
			@Nullable String @Nullable [] names = this.delegate.getParameterNames(constructor);
			if (names != null) {
				return names;
			}
			LogMessage message = LogMessage.format(
					"Unable to use value object binding with constructor [%s] as parameter names cannot be discovered. "
							+ "Ensure that the compiler uses the '-parameters' flag",
					constructor);
			this.noParameterNamesHandler.accept(message);
			logger.debug(message);
			return null;
		}

	}

Domain

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free