use of org.apache.dubbo.config.annotation.Reference in project dubbo by alibaba.
the class ServiceBeanNameBuilderTest method testReferenceAnnotation.
@Test
public void testReferenceAnnotation() {
Reference reference = AnnotationUtils.getAnnotation(ReflectionUtils.findField(ServiceBeanNameBuilderTest.class, "INTERFACE_CLASS"), Reference.class);
ServiceBeanNameBuilder builder = ServiceBeanNameBuilder.create(reference, INTERFACE_CLASS, environment);
Assertions.assertEquals("ServiceBean:org.apache.dubbo.config.spring.api.DemoService:1.0.0:DUBBO", builder.build());
}
use of org.apache.dubbo.config.annotation.Reference in project dubbo by alibaba.
the class MergedAnnotationTest method testMergedReference.
@Test
public void testMergedReference() {
Field field = ReflectionUtils.findField(TestBean1.class, "demoService");
Reference reference = AnnotatedElementUtils.getMergedAnnotation(field, Reference.class);
Assertions.assertEquals("dubbo", reference.group());
Assertions.assertEquals("1.0.0", reference.version());
Field field2 = ReflectionUtils.findField(TestBean2.class, "demoService");
Reference reference2 = AnnotatedElementUtils.getMergedAnnotation(field2, Reference.class);
Assertions.assertEquals("group", reference2.group());
Assertions.assertEquals("2.0", reference2.version());
}
use of org.apache.dubbo.config.annotation.Reference in project dubbo by alibaba.
the class ReferenceConfigTest method testConstructWithReferenceAnnotation.
@Test
public void testConstructWithReferenceAnnotation() throws NoSuchFieldException {
Reference reference = getClass().getDeclaredField("innerTest").getAnnotation(Reference.class);
ReferenceConfig referenceConfig = new ReferenceConfig(reference);
Assertions.assertEquals(1, referenceConfig.getMethods().size());
Assertions.assertEquals(((MethodConfig) referenceConfig.getMethods().get(0)).getName(), "sayHello");
Assertions.assertEquals(1300, (int) ((MethodConfig) referenceConfig.getMethods().get(0)).getTimeout());
Assertions.assertEquals(4, (int) ((MethodConfig) referenceConfig.getMethods().get(0)).getRetries());
Assertions.assertEquals(((MethodConfig) referenceConfig.getMethods().get(0)).getLoadbalance(), "random");
Assertions.assertEquals(3, (int) ((MethodConfig) referenceConfig.getMethods().get(0)).getActives());
Assertions.assertEquals(5, (int) ((MethodConfig) referenceConfig.getMethods().get(0)).getExecutes());
Assertions.assertTrue(((MethodConfig) referenceConfig.getMethods().get(0)).isAsync());
Assertions.assertEquals(((MethodConfig) referenceConfig.getMethods().get(0)).getOninvokeMethod(), "i");
Assertions.assertEquals(((MethodConfig) referenceConfig.getMethods().get(0)).getOnreturnMethod(), "r");
Assertions.assertEquals(((MethodConfig) referenceConfig.getMethods().get(0)).getOnthrowMethod(), "t");
Assertions.assertEquals(((MethodConfig) referenceConfig.getMethods().get(0)).getCache(), "c");
}
use of org.apache.dubbo.config.annotation.Reference in project dubbo by alibaba.
the class ReferenceAnnotationBeanPostProcessor method doGetInjectedBean.
@Override
protected Object doGetInjectedBean(AnnotationAttributes attributes, Object bean, String beanName, Class<?> injectedType, InjectionMetadata.InjectedElement injectedElement) throws Exception {
/**
* The name of bean that annotated Dubbo's {@link Service @Service} in local Spring {@link ApplicationContext}
*/
String referencedBeanName = buildReferencedBeanName(attributes, injectedType);
/**
* The name of bean that is declared by {@link Reference @Reference} annotation injection
*/
String referenceBeanName = getReferenceBeanName(attributes, injectedType);
referencedBeanNameIdx.computeIfAbsent(referencedBeanName, k -> new TreeSet<String>()).add(referenceBeanName);
ReferenceBean referenceBean = buildReferenceBeanIfAbsent(referenceBeanName, attributes, injectedType);
boolean localServiceBean = isLocalServiceBean(referencedBeanName, referenceBean, attributes);
prepareReferenceBean(referencedBeanName, referenceBean, localServiceBean);
registerReferenceBean(referencedBeanName, referenceBean, localServiceBean, referenceBeanName);
cacheInjectedReferenceBean(referenceBean, injectedElement);
return getBeanFactory().applyBeanPostProcessorsAfterInitialization(referenceBean.get(), referenceBeanName);
}
use of org.apache.dubbo.config.annotation.Reference in project dubbo by alibaba.
the class AnnotationPropertyValuesAdapterTest method test.
@Test
public void test() {
MockEnvironment mockEnvironment = new MockEnvironment();
mockEnvironment.setProperty("version", "1.0.0");
mockEnvironment.setProperty("url", " dubbo://localhost:12345");
Field field = ReflectionUtils.findField(TestBean.class, "demoService");
Reference reference = AnnotationUtils.getAnnotation(field, Reference.class);
AnnotationPropertyValuesAdapter propertyValues = new AnnotationPropertyValuesAdapter(reference, mockEnvironment);
ReferenceBean referenceBean = new ReferenceBean();
DataBinder dataBinder = new DataBinder(referenceBean);
dataBinder.setDisallowedFields("application", "module", "consumer", "monitor", "registry");
DefaultConversionService conversionService = new DefaultConversionService();
conversionService.addConverter(new Converter<String[], String>() {
@Override
public String convert(String[] source) {
return arrayToCommaDelimitedString(source);
}
});
conversionService.addConverter(new Converter<String[], Map<String, String>>() {
@Override
public Map<String, String> convert(String[] source) {
return CollectionUtils.toStringMap(source);
}
});
dataBinder.setConversionService(conversionService);
dataBinder.bind(propertyValues);
// System.out.println(referenceBean);
Assertions.assertEquals(DemoService.class, referenceBean.getInterfaceClass());
Assertions.assertEquals("org.apache.dubbo.config.spring.api.DemoService", referenceBean.getInterface());
Assertions.assertEquals("1.0.0", referenceBean.getVersion());
Assertions.assertEquals("group", referenceBean.getGroup());
Assertions.assertEquals("dubbo://localhost:12345", referenceBean.getUrl());
Assertions.assertEquals("client", referenceBean.getClient());
Assertions.assertEquals(true, referenceBean.isGeneric());
Assertions.assertNull(referenceBean.isInjvm());
Assertions.assertEquals(false, referenceBean.isCheck());
Assertions.assertEquals(true, referenceBean.isInit());
Assertions.assertEquals(true, referenceBean.getLazy());
Assertions.assertEquals(true, referenceBean.getStubevent());
Assertions.assertEquals("reconnect", referenceBean.getReconnect());
Assertions.assertEquals(true, referenceBean.getSticky());
Assertions.assertEquals("javassist", referenceBean.getProxy());
Assertions.assertEquals("stub", referenceBean.getStub());
Assertions.assertEquals("failover", referenceBean.getCluster());
Assertions.assertEquals(Integer.valueOf(1), referenceBean.getConnections());
Assertions.assertEquals(Integer.valueOf(1), referenceBean.getCallbacks());
Assertions.assertEquals("onconnect", referenceBean.getOnconnect());
Assertions.assertEquals("ondisconnect", referenceBean.getOndisconnect());
Assertions.assertEquals("owner", referenceBean.getOwner());
Assertions.assertEquals("layer", referenceBean.getLayer());
Assertions.assertEquals(Integer.valueOf(1), referenceBean.getRetries());
Assertions.assertEquals("random", referenceBean.getLoadbalance());
Assertions.assertEquals(true, referenceBean.isAsync());
Assertions.assertEquals(Integer.valueOf(1), referenceBean.getActives());
Assertions.assertEquals(true, referenceBean.getSent());
Assertions.assertEquals("mock", referenceBean.getMock());
Assertions.assertEquals("validation", referenceBean.getValidation());
Assertions.assertEquals(Integer.valueOf(2), referenceBean.getTimeout());
Assertions.assertEquals("cache", referenceBean.getCache());
Assertions.assertEquals("default,default", referenceBean.getFilter());
Assertions.assertEquals("default,default", referenceBean.getListener());
Map<String, String> data = new LinkedHashMap<String, String>();
data.put("key1", "value1");
Assertions.assertEquals(data, referenceBean.getParameters());
// Bean compare
Assertions.assertNull(referenceBean.getRegistry());
}
Aggregations