private MethodParameterMetadata[] initializeParameterMetadata() { Class<?>[] paramTypes = this.method.getParameterTypes(); MethodParameterMetadata[] parameterMetadata = new MethodParameterMetadata[paramTypes.length]; for (int i = 0; i < paramTypes.length; i++) { MethodParameterMetadata metadata = new MethodParameterMetadata(this.method, i); metadata.initParameterNameDiscovery(this.parameterNameDiscoverer); GenericTypeResolver.resolveParameterType(metadata.parameter, this.method.getDeclaringClass()); parameterMetadata[i] = metadata; } return parameterMetadata; }
else if (metadata.getHeaderAnnotation() == null && !metadata.hasHeadersAnnotation()) {
Object value = parameters[i]; MethodParameterMetadata metadata = this.parameterMetadata[i]; Header headerAnnotation = metadata.getHeaderAnnotation(); if (metadata == payloadParameterMetadata) { Assert.notNull(value, "payload object must not be null"); String headerName = metadata.getHeaderName(); boolean required = headerAnnotation.required(); if (value != null) { else if (metadata.hasHeadersAnnotation() || metadata.isMapOrProperties()) { if (value != null) { this.addHeadersAnnotatedParameterToMap(value, headers);
MethodParameterMetadata metadata = this.parameterMetadata[i]; Class<?> expectedType = metadata.getParameterType(); Header headerAnnotation = metadata.getHeaderAnnotation(); if (metadata == this.payloadParameterMetadata) { args[i] = message.getPayload(); String headerName = metadata.getHeaderName(); Object value = message.getHeaders().get(headerName); if (value == null && headerAnnotation.required()) { else if (metadata.isMapOrProperties()) { if (Properties.class.isAssignableFrom(expectedType)) { args[i] = this.getStringTypedHeaders(message);
String getHeaderName() { if (this.getHeaderAnnotation() == null) { return null; } String paramName = this.getHeaderAnnotation().value(); if (!StringUtils.hasText(paramName)) { paramName = this.parameter.getParameterName(); Assert.state(paramName != null, "No parameter name specified on @Header and unable to discover in class file."); } return paramName; }