public SwaggerProducer createProducer(Object producerInstance) { Class<?> producerCls = BeanUtils.getImplClassFromBean(producerInstance); SwaggerGenerator producerGenerator = UnitTestSwaggerUtils.generateSwagger(producerCls); Swagger swagger = producerGenerator.getSwagger(); return createProducer(producerInstance, swagger); }
protected void processProvider(String beanName, Object bean) { // aop后,新的实例的父类可能是原class,也可能只是个proxy,父类不是原class // 所以,需要先取出原class,再取标注 Class<?> beanCls = BeanUtils.getImplClassFromBean(bean); RpcSchema rpcSchema = beanCls.getAnnotation(RpcSchema.class); if (rpcSchema == null) { return; } String schemaId = rpcSchema.schemaId(); if (StringUtils.isEmpty(schemaId)) { Class<?>[] intfs = beanCls.getInterfaces(); if (intfs.length == 1) { schemaId = intfs[0].getName(); } else { throw new Error("Must be schemaId or implements only one interface"); } } PojoProducerMeta pojoProducerMeta = new PojoProducerMeta(); pojoProducerMeta.setSchemaId(schemaId); pojoProducerMeta.setInstance(bean); pojoProducerMeta.setInstanceClass(beanCls); registerPojoProducer(pojoProducerMeta); } }
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);
private void initPojoProducerMeta(PojoProducerMeta pojoProducerMeta) { if (pojoProducerMeta.getInstance() != null) { return; } String[] nameAndValue = parseImplementation(pojoProducerMeta.getImplementation()); InstanceFactory factory = instanceFactoryMgr.ensureFindValue(nameAndValue[0]); Object instance = factory.create(nameAndValue[1]); Class<?> instanceClass = BeanUtils.getImplClassFromBean(instance); pojoProducerMeta.setInstance(instance); pojoProducerMeta.setInstanceClass(instanceClass); }