private void add(ConstructorDescriptor constructor) { Result<StaticExecutable> creator = context.getMappingResolver().creator(constructor); this.creator = MappingResolver.higherOf(this.creator, creator); }
@Override public Optional<ValueType> describe(@Nullable PropertyPath path, TypeContext typeContext, DescribeContext context) { TypeDescriptor type = typeContext.type; MappingResolver mappingResolver = context.getMappingResolver(); MethodDescriptor valueMethod = getValueMethod(type, mappingResolver); if (valueMethod != null) { Class<?> rawDelegateType = valueMethod.getRawReturnType(); StaticExecutable creator = getCreator(type, rawDelegateType, mappingResolver); ValueType valueType = context.describeNow(path, new TypeContext(valueMethod)); return Optional.of(DelegateType.of(valueMethod, creator, valueType)); } return Optional.empty(); }
private String getParameterName(ParameterDescriptor parameter) { return Check.notNull(context.getMappingResolver().name(parameter), type.getSimpleName() + " parameter name").value; }
@Override public Optional<ValueType> describe(PropertyPath path, TypeContext typeContext, DescribeContext context) { if (!applies(path, typeContext)) { return Optional.empty(); } MappingResolver mappingResolver = context.getMappingResolver(); Map<String, TypeDescriptor> typesByAlias = new LinkedHashMap<>(); TypeDescriptor type = typeContext.type; String alias = Check.notNull(mappingResolver.alias(type).value, "alias"); typesByAlias.put(alias, type); registerSubclasses(mappingResolver, typesByAlias, mappingResolver.subclasses(type)); ObjectTypeMapping objectTypeMapping = new ObjectTypeMapping(typesByAlias); return objectTypeMapping.describe(path, typeContext, context); }
private void add(MethodDescriptor creatorMethod) { if (creatorMethod.isStatic() && creatorMethod.getRawReturnType() != void.class) { Result<StaticExecutable> creator = context.getMappingResolver().creator(creatorMethod); this.creator = MappingResolver.higherOf(this.creator, creator); } }