use of org.summerb.utils.Pair in project summerb by skarpushin.
the class DomLoaderImpl method discoverDomFields.
protected List<Pair<Ref, PropertyDescriptor>> discoverDomFields(Class<?> clazz, Map<String, Ref> refs) {
try {
Preconditions.checkArgument(clazz != null, "clazz must not be null");
Preconditions.checkArgument(refs != null && refs.size() > 0, "refsToResolve must not be null");
List<Pair<Ref, PropertyDescriptor>> ret = new ArrayList<>();
PropertyDescriptor[] srcProps = BeanUtils.getPropertyDescriptors(clazz);
for (PropertyDescriptor pd : srcProps) {
Method writeMethod = pd.getWriteMethod();
if (writeMethod == null) {
continue;
}
String targetRefName = tryResolveTargetRefName(pd, clazz);
if (targetRefName == null) {
continue;
}
// Search for applicable reference
Ref ref = refs.get(targetRefName);
if (ref == null) {
continue;
}
ret.add(Pair.of(ref, pd));
}
return ret;
} catch (Throwable t) {
throw new RuntimeException("Failed to resolve DOM fields", t);
}
}
use of org.summerb.utils.Pair in project summerb by skarpushin.
the class DomLoaderDeviceGatewayTest method testDiscoverDomFields.
@Test
public void testDiscoverDomFields() throws Exception {
DataSetLoader dataSetLoader = mock(DataSetLoader.class);
EasyCrudServiceResolver easyCrudServiceResolver = mock(EasyCrudServiceResolver.class);
DomLoaderImpl f = new DomLoaderImpl(dataSetLoader, easyCrudServiceResolver);
Map<String, Ref> refs = Collections.singletonMap(Refs.envDevices.getName(), Refs.envDevices);
List<Pair<Ref, PropertyDescriptor>> domFields = f.discoverDomFields(Env.class, refs);
assertNotNull(domFields);
assertEquals(1, domFields.size());
assertEquals("devices", domFields.get(0).getValue().getName());
}
Aggregations