Spring Data Commons implementation for HAPI FHIR (Part 4)

<p>Now we are ready to implement more advance functionality. In our Repository Factory<strong>&nbsp;</strong>we override the query lookup strategy using our own implementation for FHIR queries (see the next section)</p> <p><strong>Strategy:</strong></p> <pre> public class FHIRQueryLookupStrategy implements QueryLookupStrategy { private final IGenericClient fhirClient; public FHIRQueryLookupStrategy(IGenericClient fhirClient) { this.fhirClient = fhirClient; } @Override public RepositoryQuery resolveQuery(Method method, RepositoryMetadata metadata, ProjectionFactory factory, NamedQueries namedQueries) { return new FHIRQuery(method, metadata, factory, fhirClient); } }</pre> <p><strong>Repository Factory:</strong></p> <pre> public class FhirRepositoryFactory extends RepositoryFactorySupport { private final IGenericClient fhirClient; ... @Override protected Optional&lt;QueryLookupStrategy&gt; getQueryLookupStrategy(QueryLookupStrategy.Key key, QueryMethodEvaluationContextProvider evaluationContextProvider) { return Optional.of(new FHIRQueryLookupStrategy(fhirClient)); } }</pre> <h1>Query methods support</h1> <p><img alt="" src="https://miro.medium.com/v2/resize:fit:667/1*ApmMIMF4wscOw72AL5vTvw.png" style="height:468px; width:667px" /></p> <p>No we are implementing&nbsp;<strong>RepositoryQuery</strong>&nbsp;interface which has two methods:<br /> <strong>execute()&nbsp;</strong>&mdash; executes the target method.<br /> <strong>getQueryMethod()&nbsp;</strong>&mdash; returns a method metadata.</p> <p>Inside the constructor we take general methods metadata and also parse parameter names (based on method name).</p> <p><a href="https://medium.com/@svosh2/spring-data-commons-implementation-for-hapi-fhir-part-4-c6c27bcf67d1"><strong>Click Here</strong></a></p>