下面列出了com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition#hasSetter ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
protected void processBeanParameter(int producerParamIdx, Parameter producerParameter) {
ProducerBeanParamMapper mapper = new ProducerBeanParamMapper(
providerMethod.getParameters()[producerParamIdx].getName(), producerParameter.getType());
JavaType producerType = TypeFactory.defaultInstance().constructType(producerParameter.getParameterizedType());
for (BeanPropertyDefinition propertyDefinition : serializationConfig.introspect(producerType)
.findProperties()) {
String parameterName = collectParameterName(providerMethod, propertyDefinition);
Integer swaggerIdx = findSwaggerParameterIndex(parameterName);
if (swaggerIdx == null) {
throw new IllegalStateException(String
.format("failed to find producer parameter in contract, method=%s:%s, bean parameter name=%s.",
providerMethod.getDeclaringClass().getName(), providerMethod.getName(), parameterName));
}
Setter<Object, Object> setter;
if (propertyDefinition.hasSetter()) {
setter = LambdaMetafactoryUtils.createLambda(propertyDefinition.getSetter().getAnnotated(), Setter.class);
} else {
setter = LambdaMetafactoryUtils.createSetter(propertyDefinition.getField().getAnnotated());
}
swaggerParameterTypes.put(parameterName, propertyDefinition.getPrimaryType());
mapper.addField(parameterName, setter);
processedSwaggerParamters.add(parameterName);
}
mappers.add(mapper);
}
protected Object initSetter(BeanPropertyDefinition propertyDefinition) {
if (propertyDefinition.hasSetter()) {
return LambdaMetafactoryUtils.createSetter(propertyDefinition.getSetter().getAnnotated());
}
if (propertyDefinition.hasField() && propertyDefinition.getField().isPublic()) {
return LambdaMetafactoryUtils.createSetter(propertyDefinition.getField().getAnnotated());
}
return null;
}
@Override
public BeanDeserializerBuilder updateBuilder(DeserializationConfig config, BeanDescription beanDesc, BeanDeserializerBuilder builder) {
for (BeanPropertyDefinition propDef : beanDesc.findProperties()) {
if (!propDef.hasGetter() || propDef.hasSetter()) {
continue;
}
AnnotatedMember getter = propDef.getAccessor();
if (!Keeper.class.equals(getter.getRawType())) {
continue;
}
builder.addOrReplaceProperty(new CustomGetterBeanProperty(propDef, getter), true);
}
return builder;
}