@Override protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { builder.addPropertyValue(PojoConst.FIELD_MICROSERVICE_NAME, element.getAttribute(PojoConst.MICROSERVICE_NAME)); String schemaId = element.getAttribute(PojoConst.SCHEMA_ID); String intf = element.getAttribute(PojoConst.INTERFACE); if (StringUtils.isEmpty(intf) && !StringUtils.isEmpty(schemaId)) { // 尝试将schemaId当作接口名使用 Class<?> consumerIntf = ClassUtils.getClassByName(null, schemaId); if (consumerIntf != null) { intf = schemaId; } } builder.addPropertyValue(PojoConst.FIELD_SCHEMA_ID, schemaId); builder.addPropertyValue(PojoConst.FIELD_INTERFACE, intf); if (StringUtils.isEmpty(schemaId) && StringUtils.isEmpty(intf)) { throw new Error("schema-id and interface can not both be empty."); } } }
@Override public boolean canProcess(Class<?> cls) { return ClassUtils.hasAnnotation(cls, RequestMapping.class); }
@Override public ParamValueProcessor create(Parameter parameter, Type genericParamType) { JavaType targetType = TypeFactory.defaultInstance().constructType(genericParamType); boolean rawJson = ClassUtils.isRawJsonType(parameter); if (genericParamType.getTypeName().equals(String.class.getTypeName()) && rawJson) { return new RawJsonBodyProcessor(targetType); } return new BodyProcessor(targetType); } }
public SchemaMeta(Swagger swagger, MicroserviceMeta microserviceMeta, String schemaId) { this.packageName = SchemaUtils.generatePackageName(microserviceMeta, schemaId); this.swagger = swagger; this.name = schemaId; this.microserviceMeta = microserviceMeta; this.microserviceQualifiedName = microserviceMeta.getName() + "." + schemaId; // 确保swagger对应的接口是存在的 swaggerIntf = ClassUtils.getOrCreateInterface(swagger, microserviceMeta.getClassLoader(), packageName); createOperationMgr("schemaMeta " + schemaId + " operation mgr"); operationMgr.setRegisterErrorFmt("Operation name repeat, schema=%s, operation=%s"); initOperations(); }
public static String generatePackageName(MicroserviceMeta microserviceMeta, String schemaId) { String name = "cse.gen." + microserviceMeta.getAppId() + "." + microserviceMeta.getShortName() + "." + schemaId; return ClassUtils.correctClassName(name); }
public SwaggerProducer createProducer(Object producerInstance, Swagger swagger) { Class<?> producerCls = BeanUtils.getImplClassFromBean(producerInstance); Map<String, Method> visibleProducerMethods = retrieveVisibleMethods(producerCls); Class<?> swaggerIntf = ClassUtils.getOrCreateInterface(swagger, null, null);
protected SwaggerGenerator generateSwagger(CONTEXT context) { SwaggerGeneratorContext generatorContext = compositeSwaggerGeneratorContext.selectContext(context.getProviderClass()); SwaggerGenerator generator = new SwaggerGenerator(generatorContext, context.getProviderClass()); generator.setClassLoader(context.getMicroserviceMeta().getClassLoader()); generator.setPackageName( SchemaUtils.generatePackageName(context.getMicroserviceMeta(), context.getSchemaId())); generator.generate(); // 确保接口是存在的 ClassUtils.getOrCreateInterface(generator); return generator; } }