Search in sources :

Example 1 with Pair

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);
    }
}
Also used : Ref(org.summerb.easycrud.api.dto.relations.Ref) PropertyDescriptor(java.beans.PropertyDescriptor) ArrayList(java.util.ArrayList) Method(java.lang.reflect.Method) Pair(org.summerb.utils.Pair)

Example 2 with Pair

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());
}
Also used : Ref(org.summerb.easycrud.api.dto.relations.Ref) EasyCrudServiceResolver(org.summerb.easycrud.api.EasyCrudServiceResolver) DataSetLoader(org.summerb.easycrud.api.relations.DataSetLoader) Pair(org.summerb.utils.Pair) Test(org.junit.Test)

Aggregations

Ref (org.summerb.easycrud.api.dto.relations.Ref)2 Pair (org.summerb.utils.Pair)2 PropertyDescriptor (java.beans.PropertyDescriptor)1 Method (java.lang.reflect.Method)1 ArrayList (java.util.ArrayList)1 Test (org.junit.Test)1 EasyCrudServiceResolver (org.summerb.easycrud.api.EasyCrudServiceResolver)1 DataSetLoader (org.summerb.easycrud.api.relations.DataSetLoader)1