DATACMNS-1260 - Extract EvaluationContextProvider and corresponding SPIs into dedicated package.
We now have a refined replica of the EvaluationContextProvider API and SPIs in the org.springframework.data.spel package. It has seen a bit of a Java 8 overhaul by removing the SPI support class in favor of turning most methods in EvaluationContextExtension into default ones. The already existing API has been renamed to QueryMethodEvaluationContextProvider to indicate it's working with additional semantics specific to query methods (i.e. the Parameters metadata). The internals have been refactored to use the new API but still detect implementations of the old EvaluationContextExtension interface. The implementations get wrapped into an adapting proxy to satisfy the new API so that the actual inspection and usage of the extension is now already done using the new APIs. The repository configuration has slightly change so that the creation of the EvaluationContextProvider is now taking place within RepositoryFactoryBeanSupport's implementation of BeanFactoryAware. AbstractMappingContext is now ApplicationContextAware and holds an ExtensionAwareEvaluationContextProvider using the configured ApplicationContext. That EvaluationContextProvider is forwarded to all MutablePersistentEntity instances. BasicPersistentEntity now exposes getEvaluationContext(…) to subclasses to easily create an EvaluationContext using the extension aware infrastructure. Removed DefaultEvaluationContextProvider in favor of a simple constant in QueryMethodEvaluationContextProvider. Related tickets: DATACMNS-1258, DATACMNS-1108.
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright 2017-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.data.spel;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.data.spel.spi.EvaluationContextExtension;
|
||||
|
||||
/**
|
||||
* Unit tests for {@link EvaluationContextExtensionInformation}.
|
||||
*
|
||||
* @author Oliver Gierke
|
||||
*/
|
||||
public class EvaluationContextExtensionInformationUnitTests {
|
||||
|
||||
@Test // DATACMNS-1024
|
||||
public void supportsMethodOverloadsOnRoot() {
|
||||
|
||||
EvaluationContextExtensionInformation information = new EvaluationContextExtensionInformation(
|
||||
SampleExtension.class);
|
||||
|
||||
Optional<Object> target = Optional.of(new Object());
|
||||
|
||||
information.getRootObjectInformation(target).getFunctions(target);
|
||||
}
|
||||
|
||||
interface SampleExtension extends EvaluationContextExtension {
|
||||
|
||||
@Override
|
||||
SampleRoot getRootObject();
|
||||
}
|
||||
|
||||
interface SampleRoot {
|
||||
|
||||
void someMethod();
|
||||
|
||||
void someMethod(String parameter);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user