use of org.summerb.easycrud.api.EasyCrudService in project summerb by skarpushin.
the class DataSetLoaderImplTest method testLoadObjectsByIds_ExpectTwoDifferentObjectsLoadedOk.
@Test
public void testLoadObjectsByIds_ExpectTwoDifferentObjectsLoadedOk() throws Exception {
DataSetLoaderImpl fixture = buildMockedInstance();
EasyCrudService service1 = Mockito.mock(EasyCrudService.class);
when(fixture.getEasyCrudServiceResolver().resolveByEntityType("dto1")).thenReturn(service1);
TestDto1 dto1 = new TestDto1();
dto1.setId("d1");
when(service1.findById("d1")).thenReturn(dto1);
EasyCrudService service2 = Mockito.mock(EasyCrudService.class);
when(fixture.getEasyCrudServiceResolver().resolveByEntityType("dto2")).thenReturn(service2);
TestDto2 dto2 = new TestDto2();
dto2.setId(2L);
when(service2.findById(2L)).thenReturn(dto2);
DataSet ret = new DataSet();
Map<String, Set<Object>> ids = new HashMap<>();
ids.put("dto1", ids("d1"));
ids.put("dto2", ids(2L));
fixture.loadObjectsByIds(ids, ret);
assertNotNull(ret.get("dto1"));
assertNotNull(ret.get("dto1").find("d1"));
assertNotNull(ret.get("dto2"));
assertNotNull(ret.get("dto2").find(2L));
}
use of org.summerb.easycrud.api.EasyCrudService in project summerb by skarpushin.
the class EasyCrudScaffoldImpl method discoverDtoClassFromServiceInterface.
@SuppressWarnings("unchecked")
protected <TId, TDto extends HasId<TId>, TService extends EasyCrudService<TId, TDto>> Class<TDto> discoverDtoClassFromServiceInterface(Class<TService> serviceInterface) {
Preconditions.checkArgument(EasyCrudService.class.isAssignableFrom(serviceInterface), "Service interface is supposed to be a subclass of EasyCrudService");
ParameterizedType easyCrudServiceType = null;
for (int i = 0; i < serviceInterface.getGenericInterfaces().length; i++) {
Type candidate = serviceInterface.getGenericInterfaces()[i];
if (!(candidate instanceof ParameterizedType)) {
continue;
}
ParameterizedType candidatePt = (ParameterizedType) candidate;
if (EasyCrudService.class.equals(candidatePt.getRawType())) {
easyCrudServiceType = candidatePt;
break;
}
}
Preconditions.checkState(easyCrudServiceType != null, "Wasn't able to located parent interface EasyCrudService");
Type ret = easyCrudServiceType.getActualTypeArguments()[1];
Preconditions.checkArgument(DtoBase.class.isAssignableFrom((Class<?>) ret), "DTO class supposed to impl DtoBase interface");
Preconditions.checkArgument(HasId.class.isAssignableFrom((Class<?>) ret), "DTO class supposed to impl HasId interface");
return (Class<TDto>) ret;
}
Aggregations