@Test void validateFetch() { Fetch fetch = new Fetch().field("label").field("ref", new Fetch().field("refLabel")); EntityType entityType = mock(EntityType.class); Attribute idAttribute = mock(Attribute.class); when(idAttribute.getName()).thenReturn("id"); when(entityType.getIdAttribute()).thenReturn(idAttribute); Attribute refAttribute = mock(Attribute.class); EntityType refEntityType = mock(EntityType.class); Attribute refIdAttribute = mock(Attribute.class); when(refIdAttribute.getName()).thenReturn("refId"); when(refEntityType.getIdAttribute()).thenReturn(refIdAttribute); when(refAttribute.getRefEntity()).thenReturn(refEntityType); when(entityType.getAttribute("ref")).thenReturn(refAttribute); Fetch expectedFetch = new Fetch(true) .field("id") .field("label") .field("ref", new Fetch(true).field("refId").field("refLabel")); assertEquals(expectedFetch, fetchValidatorImpl.validateFetch(fetch, entityType)); }
@Override public Fetch validateFetch(Fetch fetch, EntityType entityType) { if (fetch.isValidated()) { return fetch; } Fetch validatedFetch = new Fetch(true); Attribute idAttribute = entityType.getIdAttribute(); if (idAttribute != null && !fetch.hasField(idAttribute)) { validatedFetch.field(idAttribute.getName()); } fetch .getFields() .forEach( field -> { Fetch subFetch = fetch.getFetch(field); if (subFetch != null) { Fetch validatedSubFetch = validateFetch(subFetch, entityType.getAttribute(field).getRefEntity()); validatedFetch.field(field, validatedSubFetch); } else { validatedFetch.field(field); } }); return validatedFetch; }
FetchValidatorImpl implements FetchValidator { @Override public Fetch validateFetch(Fetch fetch, EntityType entityType) { if (fetch.isValidated()) { return fetch; } Fetch validatedFetch = new Fetch(true); Attribute idAttribute = entityType.getIdAttribute(); if (idAttribute != null && !fetch.hasField(idAttribute)) { validatedFetch.field(idAttribute.getName()); } fetch .getFields() .forEach( field -> { Fetch subFetch = fetch.getFetch(field); if (subFetch != null) { Fetch validatedSubFetch = validateFetch(subFetch, entityType.getAttribute(field).getRefEntity()); validatedFetch.field(field, validatedSubFetch); } else { validatedFetch.field(field); } }); return validatedFetch; } }
FetchValidatorImpl implements FetchValidator { @Override public Fetch validateFetch(Fetch fetch, EntityType entityType) { if (fetch.isValidated()) { return fetch; } Fetch validatedFetch = new Fetch(true); Attribute idAttribute = entityType.getIdAttribute(); if (idAttribute != null && !fetch.hasField(idAttribute)) { validatedFetch.field(idAttribute.getName()); } fetch .getFields() .forEach( field -> { Fetch subFetch = fetch.getFetch(field); if (subFetch != null) { Fetch validatedSubFetch = validateFetch(subFetch, entityType.getAttribute(field).getRefEntity()); validatedFetch.field(field, validatedSubFetch); } else { validatedFetch.field(field); } }); return validatedFetch; }  }
FetchValidatorImpl implements FetchValidator { @Override public Fetch validateFetch(Fetch fetch, EntityType entityType) { if (fetch.isValidated()) { return fetch; } Fetch validatedFetch = new Fetch(true); Attribute idAttribute = entityType.getIdAttribute(); if (idAttribute != null && !fetch.hasField(idAttribute)) { validatedFetch.field(idAttribute.getName()); } fetch .getFields() .forEach( field -> { Fetch subFetch = fetch.getFetch(field); if (subFetch != null) { Fetch validatedSubFetch = validateFetch(subFetch, entityType.getAttribute(field).getRefEntity()); validatedFetch.field(field, validatedSubFetch); } else { validatedFetch.field(field); } }); return validatedFetch; }  @Override Fetch validateFetch(Fetch fetch, EntityType entityType); }
FetchValidatorImpl implements FetchValidator { @Override public Fetch validateFetch(Fetch fetch, EntityType entityType) { if (fetch.isValidated()) { return fetch; } Fetch validatedFetch = new Fetch(true); Attribute idAttribute = entityType.getIdAttribute(); if (idAttribute != null && !fetch.hasField(idAttribute)) { validatedFetch.field(idAttribute.getName()); } fetch .getFields() .forEach( field -> { Fetch subFetch = fetch.getFetch(field); if (subFetch != null) { Fetch validatedSubFetch = validateFetch(subFetch, entityType.getAttribute(field).getRefEntity()); validatedFetch.field(field, validatedSubFetch); } else { validatedFetch.field(field); } }); return validatedFetch; }  @Override Fetch validateFetch(Fetch fetch, EntityType entityType);  }