diff --git a/cqf-fhir-benchmark/pom.xml b/cqf-fhir-benchmark/pom.xml index debaa7c73c..c4a1be5a66 100644 --- a/cqf-fhir-benchmark/pom.xml +++ b/cqf-fhir-benchmark/pom.xml @@ -5,26 +5,26 @@ org.opencds.cqf.fhir cqf-fhir-benchmark - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT FHIR Clinical Reasoning (Benchmarks) Tests validating performance of FHIR Clinical Reasoning operations org.opencds.cqf.fhir cqf-fhir - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT org.opencds.cqf.fhir cqf-fhir-cr - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT org.opencds.cqf.fhir cqf-fhir-test - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT org.openjdk.jmh diff --git a/cqf-fhir-bom/pom.xml b/cqf-fhir-bom/pom.xml index 91c3a26963..bb36ac1658 100644 --- a/cqf-fhir-bom/pom.xml +++ b/cqf-fhir-bom/pom.xml @@ -5,7 +5,7 @@ org.opencds.cqf.fhir cqf-fhir-bom - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT pom FHIR Clinical Reasoning (Bill Of Materials) This bom can be used to simplify dependency management when using this project @@ -13,7 +13,7 @@ org.opencds.cqf.fhir cqf-fhir - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT @@ -21,37 +21,37 @@ org.opencds.cqf.fhir cqf-fhir-test - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT org.opencds.cqf.fhir cqf-fhir-utility - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT org.opencds.cqf.fhir cqf-fhir-cql - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT org.opencds.cqf.fhir cqf-fhir-cr - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT org.opencds.cqf.fhir cqf-fhir-cr-cli - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT org.opencds.cqf.fhir cqf-fhir-cr-hapi - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT org.opencds.cqf.fhir cqf-fhir-cr-spring - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT diff --git a/cqf-fhir-cql/pom.xml b/cqf-fhir-cql/pom.xml index c6600b9200..4a97371f3c 100644 --- a/cqf-fhir-cql/pom.xml +++ b/cqf-fhir-cql/pom.xml @@ -5,21 +5,21 @@ org.opencds.cqf.fhir cqf-fhir-cql - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT FHIR Clinical Reasoning (CQL) Tools, utilities, code gen to support CQL in FHIR Clinical Reasoning operations org.opencds.cqf.fhir cqf-fhir - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT org.opencds.cqf.fhir cqf-fhir-utility - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT org.cqframework @@ -53,7 +53,7 @@ org.opencds.cqf.fhir cqf-fhir-test - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT test diff --git a/cqf-fhir-cr-cli/pom.xml b/cqf-fhir-cr-cli/pom.xml index a37715d339..31f17f58d5 100644 --- a/cqf-fhir-cr-cli/pom.xml +++ b/cqf-fhir-cr-cli/pom.xml @@ -6,26 +6,26 @@ org.opencds.cqf.fhir cqf-fhir-cr-cli - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT FHIR Clinical Reasoning (CLI) CLI for running FHIR Clincial Reasoning operations org.opencds.cqf.fhir cqf-fhir - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT org.opencds.cqf.fhir cqf-fhir-utility - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT org.opencds.cqf.fhir cqf-fhir-cql - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT info.picocli @@ -58,13 +58,13 @@ org.opencds.cqf.fhir cqf-fhir-test - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT test org.opencds.cqf.fhir cqf-fhir-cr - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT compile diff --git a/cqf-fhir-cr-hapi/pom.xml b/cqf-fhir-cr-hapi/pom.xml index bacc3e5648..df3ff61e83 100644 --- a/cqf-fhir-cr-hapi/pom.xml +++ b/cqf-fhir-cr-hapi/pom.xml @@ -6,7 +6,7 @@ org.opencds.cqf.fhir cqf-fhir - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT cqf-fhir-cr-hapi diff --git a/cqf-fhir-cr-hapi/src/main/java/org/opencds/cqf/fhir/cr/hapi/config/CrCdsHooksConfig.java b/cqf-fhir-cr-hapi/src/main/java/org/opencds/cqf/fhir/cr/hapi/config/CrCdsHooksConfig.java index fb1171dc68..9e63a0f66f 100644 --- a/cqf-fhir-cr-hapi/src/main/java/org/opencds/cqf/fhir/cr/hapi/config/CrCdsHooksConfig.java +++ b/cqf-fhir-cr-hapi/src/main/java/org/opencds/cqf/fhir/cr/hapi/config/CrCdsHooksConfig.java @@ -1,7 +1,9 @@ package org.opencds.cqf.fhir.cr.hapi.config; import ca.uhn.fhir.context.FhirContext; +import ca.uhn.fhir.interceptor.model.RequestPartitionId; import ca.uhn.fhir.jpa.cache.IResourceChangeListenerRegistry; +import ca.uhn.fhir.jpa.model.config.PartitionSettings; import ca.uhn.fhir.jpa.searchparam.SearchParameterMap; import ca.uhn.fhir.repository.IRepository; import ca.uhn.fhir.rest.api.server.IRepositoryFactory; @@ -124,6 +126,7 @@ public CdsServiceInterceptor cdsServiceInterceptor( CdsServiceRegistryImpl cdsServiceRegistry, ICrDiscoveryServiceFactory discoveryServiceFactory, ICdsCrServiceFactory crServiceFactory, + PartitionSettings partitionSettings, Optional resourceChangeListenerRegistry) { if (resourceChangeListenerRegistry.isEmpty()) { return null; @@ -132,7 +135,11 @@ public CdsServiceInterceptor cdsServiceInterceptor( resourceChangeListenerRegistry .get() .registerResourceResourceChangeListener( - PLAN_DEFINITION_RESOURCE_NAME, SearchParameterMap.newSynchronous(), listener, 1000); + PLAN_DEFINITION_RESOURCE_NAME, + RequestPartitionId.defaultPartition(partitionSettings), + SearchParameterMap.newSynchronous(), + listener, + 1000); return listener; } } diff --git a/cqf-fhir-cr-hapi/src/main/java/org/opencds/cqf/fhir/cr/hapi/config/test/TestCrConfig.java b/cqf-fhir-cr-hapi/src/main/java/org/opencds/cqf/fhir/cr/hapi/config/test/TestCrConfig.java index 520959a60b..ced2334040 100644 --- a/cqf-fhir-cr-hapi/src/main/java/org/opencds/cqf/fhir/cr/hapi/config/test/TestCrConfig.java +++ b/cqf-fhir-cr-hapi/src/main/java/org/opencds/cqf/fhir/cr/hapi/config/test/TestCrConfig.java @@ -1,11 +1,13 @@ package org.opencds.cqf.fhir.cr.hapi.config.test; -import ca.uhn.fhir.batch2.jobs.reindex.ReindexProvider; +import ca.uhn.fhir.batch2.jobs.bulkmodify.reindex.ReindexProvider; import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.context.support.IValidationSupport; +import ca.uhn.fhir.interceptor.model.RequestPartitionId; import ca.uhn.fhir.jpa.api.config.JpaStorageSettings; import ca.uhn.fhir.jpa.api.dao.DaoRegistry; import ca.uhn.fhir.jpa.api.dao.IFhirSystemDao; +import ca.uhn.fhir.jpa.cache.IResourceChangeListener; import ca.uhn.fhir.jpa.cache.IResourceChangeListenerCacheRefresher; import ca.uhn.fhir.jpa.cache.IResourceChangeListenerRegistry; import ca.uhn.fhir.jpa.cache.ResourceChangeListenerCacheFactory; @@ -13,6 +15,7 @@ import ca.uhn.fhir.jpa.cache.ResourceChangeListenerRegistryImpl; import ca.uhn.fhir.jpa.cache.ResourceChangeListenerRegistryInterceptor; import ca.uhn.fhir.jpa.graphql.GraphQLProvider; +import ca.uhn.fhir.jpa.model.config.PartitionSettings; import ca.uhn.fhir.jpa.provider.DiffProvider; import ca.uhn.fhir.jpa.provider.IJpaSystemProvider; import ca.uhn.fhir.jpa.provider.TerminologyUploaderProvider; @@ -26,6 +29,7 @@ import ca.uhn.fhir.rest.server.RestfulServer; import ca.uhn.fhir.rest.server.provider.ResourceProviderFactory; import ca.uhn.fhir.rest.server.util.ISearchParamRegistry; +import jakarta.annotation.Nonnull; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -34,6 +38,7 @@ import org.cqframework.cql.cql2elm.model.Model; import org.hl7.cql.model.ModelIdentifier; import org.hl7.elm.r1.VersionedIdentifier; +import org.hl7.fhir.r4.model.ResourceType; import org.opencds.cqf.cql.engine.runtime.Code; import org.opencds.cqf.fhir.cql.EvaluationSettings; import org.opencds.cqf.fhir.cr.hapi.common.CodeCacheResourceChangeListener; @@ -116,12 +121,13 @@ public Map> globalValueSetCache() { @Bean public ElmCacheResourceChangeListener elmCacheResourceChangeListener( IResourceChangeListenerRegistry resourceChangeListenerRegistry, + PartitionSettings partitionSettings, DaoRegistry daoRegistry, EvaluationSettings evaluationSettings) { ElmCacheResourceChangeListener listener = new ElmCacheResourceChangeListener(daoRegistry, evaluationSettings.getLibraryCache()); - resourceChangeListenerRegistry.registerResourceResourceChangeListener( - "Library", SearchParameterMap.newSynchronous(), listener, 1000); + registerResourceResourceChangeListener( + resourceChangeListenerRegistry, partitionSettings, listener, ResourceType.Library); return listener; } @@ -129,13 +135,14 @@ public ElmCacheResourceChangeListener elmCacheResourceChangeListener( public CodeCacheResourceChangeListener codeCacheResourceChangeListener( IResourceChangeListenerRegistry resourceChangeListenerRegistry, EvaluationSettings evaluationSettings, + PartitionSettings partitionSettings, DaoRegistry daoRegistry) { CodeCacheResourceChangeListener listener = new CodeCacheResourceChangeListener(daoRegistry, evaluationSettings.getValueSetCache()); // registry - resourceChangeListenerRegistry.registerResourceResourceChangeListener( - "ValueSet", SearchParameterMap.newSynchronous(), listener, 1000); + registerResourceResourceChangeListener( + resourceChangeListenerRegistry, partitionSettings, listener, ResourceType.ValueSet); return listener; } @@ -144,9 +151,10 @@ public CodeCacheResourceChangeListener codeCacheResourceChangeListener( public IResourceChangeListenerRegistry resourceChangeListenerRegistry( InMemoryResourceMatcher inMemoryResourceMatcher, FhirContext fhirContext, + PartitionSettings partitionSettings, ResourceChangeListenerCacheFactory resourceChangeListenerCacheFactory) { return new ResourceChangeListenerRegistryImpl( - fhirContext, resourceChangeListenerCacheFactory, inMemoryResourceMatcher); + fhirContext, partitionSettings, resourceChangeListenerCacheFactory, inMemoryResourceMatcher); } @Bean @@ -158,4 +166,28 @@ IResourceChangeListenerCacheRefresher resourceChangeListenerCacheRefresher() { public ResourceChangeListenerRegistryInterceptor resourceChangeListenerRegistryInterceptor() { return new ResourceChangeListenerRegistryInterceptor(); } + + @Bean + public PartitionSettings partitionSettings() { + return new PartitionSettings(); + } + + private void registerResourceResourceChangeListener( + IResourceChangeListenerRegistry resourceChangeListenerRegistry, + PartitionSettings partitionSettings, + IResourceChangeListener listener, + ResourceType resourceType) { + + resourceChangeListenerRegistry.registerResourceResourceChangeListener( + resourceType.name(), + getRequestPartitionId(partitionSettings), + SearchParameterMap.newSynchronous(), + listener, + 1000); + } + + @Nonnull + private RequestPartitionId getRequestPartitionId(PartitionSettings partitionSettings) { + return RequestPartitionId.defaultPartition(partitionSettings); + } } diff --git a/cqf-fhir-cr-hapi/src/main/java/org/opencds/cqf/fhir/cr/hapi/repository/ClinicalIntelligenceHapiFhirRepository.java b/cqf-fhir-cr-hapi/src/main/java/org/opencds/cqf/fhir/cr/hapi/repository/ClinicalIntelligenceHapiFhirRepository.java index 885757f5db..414fdfe957 100644 --- a/cqf-fhir-cr-hapi/src/main/java/org/opencds/cqf/fhir/cr/hapi/repository/ClinicalIntelligenceHapiFhirRepository.java +++ b/cqf-fhir-cr-hapi/src/main/java/org/opencds/cqf/fhir/cr/hapi/repository/ClinicalIntelligenceHapiFhirRepository.java @@ -1,33 +1,15 @@ package org.opencds.cqf.fhir.cr.hapi.repository; -import static ca.uhn.fhir.model.valueset.BundleTypeEnum.SEARCHSET; -import static java.util.Objects.isNull; -import static java.util.Objects.nonNull; - import ca.uhn.fhir.jpa.api.dao.DaoRegistry; import ca.uhn.fhir.jpa.repository.HapiFhirRepository; -import ca.uhn.fhir.jpa.repository.SearchConverter; import ca.uhn.fhir.model.api.IQueryParameterType; -import ca.uhn.fhir.model.api.Include; -import ca.uhn.fhir.model.valueset.BundleTypeEnum; -import ca.uhn.fhir.rest.api.Constants; -import ca.uhn.fhir.rest.api.RestOperationTypeEnum; -import ca.uhn.fhir.rest.api.server.IBundleProvider; import ca.uhn.fhir.rest.api.server.RequestDetails; -import ca.uhn.fhir.rest.api.server.SystemRequestDetails; import ca.uhn.fhir.rest.server.RestfulServer; -import ca.uhn.fhir.rest.server.RestfulServerUtils; -import ca.uhn.fhir.rest.server.SimpleBundleProvider; import com.google.common.collect.Multimap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; import org.hl7.fhir.instance.model.api.IBaseBundle; import org.hl7.fhir.instance.model.api.IBaseResource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * This class is intended as a shim that extends HapiFhirRepository in order to selectively @@ -39,8 +21,6 @@ */ public class ClinicalIntelligenceHapiFhirRepository extends HapiFhirRepository { - private static final Logger ourLog = LoggerFactory.getLogger(ClinicalIntelligenceHapiFhirRepository.class); - private final RequestDetails requestDetails; private final RestfulServer restfulServer; private final DaoRegistry daoRegistry; @@ -70,96 +50,6 @@ public B search( Multimap> searchParameters, Map headers) { - var details = ClinicalIntelligenceRequestDetailsCloner.startWith(requestDetails) - .setAction(RestOperationTypeEnum.SEARCH_TYPE) - .addHeaders(headers) - .create(); - - var converter = new SearchConverter(); - converter.convertParameters(searchParameters, fhirContext()); - details.setParameters(converter.myResultParameters); - - details.setResourceName(daoRegistry.getFhirContext().getResourceType(resourceType)); - - if (details instanceof SystemRequestDetails) { - requestDetails.getParameters().entrySet().stream() - .filter(param -> Constants.PARAM_COUNT.equals(param.getKey())) - .map(Entry::getValue) - .forEach(paramValue -> details.addParameter(Constants.PARAM_COUNT, paramValue)); - } - - var resourceDao = daoRegistry.getResourceDao(resourceType); - var bundleProvider = resourceDao.search(converter.mySearchParameterMap, details); - - bundleProvider = sanitizeBundleProvider(bundleProvider); - - return createBundle(details, bundleProvider); - } - - protected IBundleProvider sanitizeBundleProvider(IBundleProvider bundleProvider) { - return nonNull(bundleProvider) ? bundleProvider : new SimpleBundleProvider(); - } - - protected Set extractIncludesFromRequestParameters(Map parameters) { - Set includes = new HashSet<>(); - - String[] reqIncludes = parameters.get(Constants.PARAM_INCLUDE); - if (reqIncludes != null) { - for (String nextInclude : reqIncludes) { - includes.add(new Include(nextInclude)); - } - } - - return includes; - } - - protected BundleTypeEnum extractBundleTypeFromRequestParameters(Map parameters) { - BundleTypeEnum bundleType; - - String[] bundleTypeValues = parameters.get(Constants.PARAM_BUNDLETYPE); - - if (isNull(bundleTypeValues)) { - return SEARCHSET; - } - - bundleType = BundleTypeEnum.VALUESET_BINDER.fromCodeString(bundleTypeValues[0]); - - if (isNull(bundleType)) { - ourLog.error( - "Could not convert value {} to a BundleTypeEnum. Defaulting to {}", - bundleTypeValues[0], - bundleType); - bundleType = SEARCHSET; - } - - return bundleType; - } - - private B createBundle(RequestDetails requestDetails, IBundleProvider bundleProvider) { - - Integer count = RestfulServerUtils.extractCountParameter(requestDetails); - String linkSelf = RestfulServerUtils.createLinkSelf(requestDetails.getFhirServerBase(), requestDetails); - - Set includes = extractIncludesFromRequestParameters(requestDetails.getParameters()); - - Integer offset = RestfulServerUtils.tryToExtractNamedParameter(requestDetails, Constants.PARAM_PAGINGOFFSET); - if (offset == null || offset < 0) { - offset = 0; - } - int start = offset; - Integer size = bundleProvider.size(); - if (size != null) { - start = Math.max(0, Math.min(offset, size)); - } - - BundleTypeEnum bundleType = extractBundleTypeFromRequestParameters(requestDetails.getParameters()); - - return unsafeCast(ClinicalIntelligenceBundleProviderUtil.createBundleFromBundleProvider( - restfulServer, requestDetails, count, linkSelf, includes, bundleProvider, start, bundleType, null)); - } - - @SuppressWarnings("unchecked") - private static T unsafeCast(Object object) { - return (T) object; + return super.search(bundleType, resourceType, searchParameters, headers); } } diff --git a/cqf-fhir-cr-spring/pom.xml b/cqf-fhir-cr-spring/pom.xml index d0f402a2cc..9fba2939b3 100644 --- a/cqf-fhir-cr-spring/pom.xml +++ b/cqf-fhir-cr-spring/pom.xml @@ -7,21 +7,21 @@ org.opencds.cqf.fhir cqf-fhir-cr-spring - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT FHIR Clinical Reasoning (Spring) Spring configurations for FHIR Clinical Reasoning org.opencds.cqf.fhir cqf-fhir - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT org.opencds.cqf.fhir cqf-fhir-cr - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT org.springframework diff --git a/cqf-fhir-cr/pom.xml b/cqf-fhir-cr/pom.xml index 0d2c00982f..581b846acf 100644 --- a/cqf-fhir-cr/pom.xml +++ b/cqf-fhir-cr/pom.xml @@ -5,33 +5,33 @@ org.opencds.cqf.fhir cqf-fhir-cr - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT FHIR Clinical Reasoning (Operations) Implementations of clinical reasoning operations org.opencds.cqf.fhir cqf-fhir - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT org.opencds.cqf.fhir cqf-fhir-cql - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT org.opencds.cqf.fhir cqf-fhir-utility - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT org.opencds.cqf.fhir cqf-fhir-test - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT test diff --git a/cqf-fhir-test/pom.xml b/cqf-fhir-test/pom.xml index 86b354dd91..bae18b178c 100644 --- a/cqf-fhir-test/pom.xml +++ b/cqf-fhir-test/pom.xml @@ -5,14 +5,14 @@ org.opencds.cqf.fhir cqf-fhir-test - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT FHIR Clinical Reasoning (Test Utilities) Utilities to support unit testing clinical reasoning operations org.opencds.cqf.fhir cqf-fhir - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT diff --git a/cqf-fhir-utility/pom.xml b/cqf-fhir-utility/pom.xml index 781f29d825..f197072c02 100644 --- a/cqf-fhir-utility/pom.xml +++ b/cqf-fhir-utility/pom.xml @@ -5,14 +5,14 @@ org.opencds.cqf.fhir cqf-fhir-utility - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT FHIR Clinical Reasoning (Utilities) Utilities to help develop clinical reasoning operations org.opencds.cqf.fhir cqf-fhir - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT @@ -94,7 +94,7 @@ org.opencds.cqf.fhir cqf-fhir-test - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT test diff --git a/docs/pom.xml b/docs/pom.xml index 4e198ea429..7f890ea7da 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -5,7 +5,7 @@ org.opencds.cqf.fhir docs - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT FHIR Clinical Reasoning (Documentation) Documentation website for FHIR Clinical Reasoning @@ -13,7 +13,7 @@ org.opencds.cqf.fhir cqf-fhir - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT @@ -23,7 +23,7 @@ cqf-fhir-bom pom import - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT diff --git a/pom.xml b/pom.xml index 789b07e1da..93df8a7d72 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.opencds.cqf.fhir cqf-fhir - 4.2.0-SNAPSHOT + 4.2.0-HAPI-SNAPSHOT pom FHIR Clinical Reasoning FHIR Clinical Reasoning Implementations @@ -25,7 +25,7 @@ 4.2.0 1.36 6.2.12 - 8.6.0 + 8.7.11-SNAPSHOT 4.6.1 33.2.1-jre 2.35.1 @@ -368,13 +368,15 @@ maven-compiler-plugin 3.14.0 - true + + false true - - -XDcompilePolicy=simple - - -Xplugin:ErrorProne -XepDisableAllWarnings - + + + + + + com.google.errorprone