diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/function/execution/DefaultFunctionExecutionMethodMetadata.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/function/execution/DefaultFunctionExecutionMethodMetadata.java index 5d085b0e..d8ddfb93 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/function/execution/DefaultFunctionExecutionMethodMetadata.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/function/execution/DefaultFunctionExecutionMethodMetadata.java @@ -14,7 +14,6 @@ package org.springframework.data.gemfire.function.execution; import java.lang.reflect.Method; - /** * @author David Turanski * @@ -22,18 +21,19 @@ import java.lang.reflect.Method; class DefaultFunctionExecutionMethodMetadata extends FunctionExecutionMethodMetadata { /** - * @param serviceInterface + * Constructs a new instance of {@link DefaultFunctionExecutionMethodMetadata} initialized with + * the {@link org.apache.geode.cache.execute.Function} {@link org.apache.geode.cache.execute.Execution} + * {@link Class interface}. + * + * @param serviceInterface {@link org.apache.geode.cache.execute.Function} + * {@link org.apache.geode.cache.execute.Execution} {@link Class interface}. */ public DefaultFunctionExecutionMethodMetadata(Class serviceInterface) { super(serviceInterface); } - /* (non-Javadoc) - * @see org.springframework.data.gemfire.function.config.FunctionExecutionMethodMetadata#newMetadataInstance(java.lang.reflect.Method) - */ @Override protected MethodMetadata newMetadataInstance(Method method) { return new MethodMetadata(method); } - } diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryBean.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryBean.java index 139c6a22..cf1fbf39 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryBean.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryBean.java @@ -14,7 +14,6 @@ * limitations under the License. * */ - package org.springframework.data.gemfire.repository.cdi; import java.lang.annotation.Annotation; @@ -24,9 +23,9 @@ import java.util.HashSet; import java.util.Optional; import java.util.Set; -import javax.enterprise.context.spi.CreationalContext; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; +import jakarta.enterprise.context.spi.CreationalContext; +import jakarta.enterprise.inject.spi.Bean; +import jakarta.enterprise.inject.spi.BeanManager; import org.apache.geode.cache.Region; @@ -51,6 +50,7 @@ import org.springframework.data.repository.config.CustomRepositoryImplementation * @see org.apache.geode.cache.Region * @since 1.8.0 */ +@SuppressWarnings("rawtypes") class GemfireRepositoryBean extends CdiRepositoryBean { static final GemfireMappingContext DEFAULT_GEMFIRE_MAPPING_CONTEXT = new GemfireMappingContext(); @@ -61,8 +61,6 @@ class GemfireRepositoryBean extends CdiRepositoryBean { private final Set> regionBeans; - /* (non-Javadoc) */ - @SuppressWarnings("unchecked") GemfireRepositoryBean(BeanManager beanManager, Class repositoryType, Set qualifiers, CustomRepositoryImplementationDetector detector, Bean gemfireMappingContextBean, Set> regionBeans) { @@ -77,17 +75,17 @@ class GemfireRepositoryBean extends CdiRepositoryBean { /** * Returns an instance of the given {@link Bean} from the container. * - * @param the actual class type of the {@link Bean}. + * @param the actual {@link Type class type} of the {@link Bean}. * @param bean the {@link Bean} defining the instance to create. * @param type the expected component type of the instance created from the {@link Bean}. * @return an instance of the given {@link Bean}. - * @see javax.enterprise.inject.spi.BeanManager#getReference(Bean, Type, CreationalContext) + * @see javax.enterprise.inject.spi.BeanManager#getReference(javax.enterprise.inject.spi.Bean, Type, javax.enterprise.context.spi.CreationalContext) * @see javax.enterprise.inject.spi.Bean * @see java.lang.reflect.Type */ @SuppressWarnings("unchecked") protected S getDependencyInstance(Bean bean, Type type) { - return (S) beanManager.getReference(bean, type, beanManager.createCreationalContext(bean)); + return (S) this.beanManager.getReference(bean, type, this.beanManager.createCreationalContext(bean)); } /** @@ -101,12 +99,13 @@ class GemfireRepositoryBean extends CdiRepositoryBean { * @see javax.enterprise.inject.spi.Bean#getTypes() * @see java.lang.Class */ - @SuppressWarnings("unchecked") protected Type resolveType(Bean bean, Class targetType) { + for (Type type : bean.getTypes()) { + Type assignableType = (type instanceof ParameterizedType ? ((ParameterizedType) type).getRawType() : type); - if (assignableType instanceof Class && targetType.isAssignableFrom((Class) assignableType)) { + if (assignableType instanceof Class && targetType.isAssignableFrom((Class) assignableType)) { return type; } } @@ -116,9 +115,9 @@ class GemfireRepositoryBean extends CdiRepositoryBean { targetType, bean)); } - /* (non-Javadoc) */ Iterable> resolveGemfireRegions() { - Set> regions = new HashSet>(regionBeans.size()); + + Set> regions = new HashSet<>(regionBeans.size()); for (Bean regionBean : regionBeans) { regions.add(getDependencyInstance(regionBean, resolveType(regionBean, Region.class))); @@ -127,14 +126,12 @@ class GemfireRepositoryBean extends CdiRepositoryBean { return regions; } - /* (non-Javadoc) */ GemfireMappingContext resolveGemfireMappingContext() { return (gemfireMappingContextBean != null ? getDependencyInstance(gemfireMappingContextBean, GemfireMappingContext.class) : DEFAULT_GEMFIRE_MAPPING_CONTEXT); } - /* (non-Javadoc) */ GemfireRepositoryFactory newGemfireRepositoryFactory() { return new GemfireRepositoryFactory(resolveGemfireRegions(), resolveGemfireMappingContext()); } diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryExtension.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryExtension.java index 4411c569..3cccb76e 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryExtension.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryExtension.java @@ -14,7 +14,6 @@ * limitations under the License. * */ - package org.springframework.data.gemfire.repository.cdi; import java.lang.annotation.Annotation; @@ -25,21 +24,21 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -import javax.enterprise.event.Observes; -import javax.enterprise.inject.spi.AfterBeanDiscovery; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; -import javax.enterprise.inject.spi.ProcessBean; +import jakarta.enterprise.event.Observes; +import jakarta.enterprise.inject.spi.AfterBeanDiscovery; +import jakarta.enterprise.inject.spi.Bean; +import jakarta.enterprise.inject.spi.BeanManager; +import jakarta.enterprise.inject.spi.ProcessBean; import org.apache.geode.cache.Region; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import org.springframework.data.gemfire.mapping.GemfireMappingContext; import org.springframework.data.repository.cdi.CdiRepositoryBean; import org.springframework.data.repository.cdi.CdiRepositoryExtensionSupport; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * The GemfireRepositoryExtension class... * @@ -47,18 +46,17 @@ import org.springframework.data.repository.cdi.CdiRepositoryExtensionSupport; * @see org.springframework.data.repository.cdi.CdiRepositoryExtensionSupport * @since 1.8.0 */ -@SuppressWarnings("unused") +@SuppressWarnings({ "rawtypes", "unused" }) public class GemfireRepositoryExtension extends CdiRepositoryExtensionSupport { - protected final Logger logger = LoggerFactory.getLogger(getClass()); + private final Logger logger = LoggerFactory.getLogger(getClass()); final Map, Bean> mappingContexts = new HashMap<>(); final Set> regionBeans = new HashSet<>(); - /* (non-Javadoc) */ public GemfireRepositoryExtension() { - logger.info("Activating CDI extension for Spring Data GemFire Repositories"); + logger.info("Activating CDI extension for Spring Data Geode Repositories"); } /** @@ -67,8 +65,8 @@ public class GemfireRepositoryExtension extends CdiRepositoryExtensionSupport { * * @param class type of the bean instance. * @param processBean annotated type as defined by CDI. - * @see javax.enterprise.inject.spi.ProcessBean - * @see javax.enterprise.event.Observes + * @see jakarta.enterprise.inject.spi.ProcessBean + * @see jakarta.enterprise.event.Observes */ @SuppressWarnings("unchecked") void processBean(@Observes ProcessBean processBean) { @@ -107,9 +105,9 @@ public class GemfireRepositoryExtension extends CdiRepositoryExtensionSupport { * Repository beans are associated to the appropriate GemfireMappingContexts based on their qualifiers. * * @param beanManager the BeanManager instance. - * @see javax.enterprise.inject.spi.AfterBeanDiscovery - * @see javax.enterprise.inject.spi.BeanManager - * @see javax.enterprise.event.Observes + * @see jakarta.enterprise.inject.spi.AfterBeanDiscovery + * @see jakarta.enterprise.inject.spi.BeanManager + * @see jakarta.enterprise.event.Observes */ void afterBeanDiscovery(@Observes AfterBeanDiscovery afterBeanDiscovery, BeanManager beanManager) { @@ -130,15 +128,14 @@ public class GemfireRepositoryExtension extends CdiRepositoryExtensionSupport { } } - /* (non-Javadoc) */ CdiRepositoryBean createRepositoryBean(BeanManager beanManager, Class repositoryType, Set qualifiers) { - // Determine the GemfireMappingContext bean that matches the qualifiers of the Repository. - Bean gemfireMappingContextBean = mappingContexts.get(qualifiers); + // Determine the GemfireMappingContext bean matching the qualifiers of the Repository. + Bean gemfireMappingContextBean = this.mappingContexts.get(qualifiers); - // Construct and return a GemFire Repository bean. - return new GemfireRepositoryBean(beanManager, repositoryType, qualifiers, getCustomImplementationDetector(), - gemfireMappingContextBean, regionBeans); + // Construct and return a GemfireRepositoryBean. + return new GemfireRepositoryBean<>(beanManager, repositoryType, qualifiers, getCustomImplementationDetector(), + gemfireMappingContextBean, this.regionBeans); } } diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/serialization/WiringInstantiator.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/serialization/WiringInstantiator.java index ccf38c42..6a40b3a0 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/serialization/WiringInstantiator.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/serialization/WiringInstantiator.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.data.gemfire.serialization; import org.apache.geode.DataSerializable; @@ -28,25 +27,23 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.wiring.BeanConfigurerSupport; /** - * Instantiator that performs instance wiring using the Spring IoC container, allowing common properties - * to be injected before the object is hydrated/deserialized. The newly created instances can be configured - * either by relying on an existing bean definition (which acts as a template) or by providing an embedded - * configuration through annotations. + * Apache Geode {@link Instantiator} that performs instance wiring using the Spring IoC container, allowing common + * properties to be injected before the object is hydrated/deserialized. The newly created instances can be configured + * either by relying on an existing bean definition (which acts as a template) or by providing an embedded configuration + * through annotations. * - * Can reuse existing instantiators to optimize instance creation. If one is not provided, it will fallback - * to reflection invocation. + * Can reuse existing {@link Instantiator Instantiators} to optimize instance creation. If one is not provided, + * it will fallback to reflection invocation. * * By default, on initialization, the class will register itself as an {@link Instantiator} through * {@link #register(Instantiator)}. This behaviour can be disabled through {@link #setAutoRegister(boolean)}. * Additionally, the instantiator registration is not distributed by default, to allow the application context * to be reused. This can be changed through {@link #setDistribute(boolean)}. * + * @author Costin Leau * @see org.springframework.beans.factory.wiring.BeanConfigurerSupport * @see org.springframework.beans.factory.wiring.BeanWiringInfoResolver * @see org.springframework.beans.factory.annotation.Autowired - * @see javax.annotation.Resource - * - * @author Costin Leau */ public class WiringInstantiator extends Instantiator implements BeanFactoryAware, InitializingBean, DisposableBean { diff --git a/spring-data-geode/src/test/java/org/springframework/data/gemfire/cache/CachingWithGemFireIntegrationTests.java b/spring-data-geode/src/test/java/org/springframework/data/gemfire/cache/CachingWithGemFireIntegrationTests.java index 85f01351..c74d08d0 100644 --- a/spring-data-geode/src/test/java/org/springframework/data/gemfire/cache/CachingWithGemFireIntegrationTests.java +++ b/spring-data-geode/src/test/java/org/springframework/data/gemfire/cache/CachingWithGemFireIntegrationTests.java @@ -14,15 +14,13 @@ * limitations under the License. * */ - package org.springframework.data.gemfire.cache; import static org.assertj.core.api.Assertions.assertThat; import java.util.Map; -import javax.annotation.PostConstruct; -import javax.annotation.Resource; +import jakarta.annotation.PostConstruct; import org.junit.Test; import org.junit.runner.RunWith; @@ -30,6 +28,7 @@ import org.junit.runner.RunWith; import org.apache.geode.cache.Region; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.gemfire.tests.integration.IntegrationTestsSupport; import org.springframework.test.context.ActiveProfiles; @@ -60,11 +59,12 @@ public class CachingWithGemFireIntegrationTests extends IntegrationTestsSupport @Autowired private NamedNumbersService namedNumbersService; - @Resource(name = "NamedNumbersRegion") + @Autowired + @Qualifier("NamedNumbersRegion") private Region namedNumbersRegion; @Test(expected = NullPointerException.class) - public void testRegionCacheHit() { + public void regionCacheHitIsCorrect() { assertThat(namedNumbersRegion.get("eleven")).isNull(); assertThat(namedNumbersRegion.containsKey("eleven")).isFalse(); @@ -87,7 +87,7 @@ public class CachingWithGemFireIntegrationTests extends IntegrationTestsSupport } @Test - public void testRegionCaching() { + public void regionCachingIsCorrect() { assertThat(namedNumbersService.wasCacheMiss()).isFalse(); assertThat(namedNumbersService.get("one").intValue()).isEqualTo(1); diff --git a/spring-data-geode/src/test/java/org/springframework/data/gemfire/config/annotation/AbstractGeodeSecurityIntegrationTests.java b/spring-data-geode/src/test/java/org/springframework/data/gemfire/config/annotation/AbstractGeodeSecurityIntegrationTests.java index 6cb9c105..e90d2b46 100644 --- a/spring-data-geode/src/test/java/org/springframework/data/gemfire/config/annotation/AbstractGeodeSecurityIntegrationTests.java +++ b/spring-data-geode/src/test/java/org/springframework/data/gemfire/config/annotation/AbstractGeodeSecurityIntegrationTests.java @@ -28,7 +28,7 @@ import java.util.Properties; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; -import javax.annotation.PostConstruct; +import jakarta.annotation.PostConstruct; import org.junit.AfterClass; import org.junit.BeforeClass; diff --git a/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/CdiExtensionIntegrationTest.java b/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/CdiExtensionIntegrationTest.java index f459630f..8496eae4 100644 --- a/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/CdiExtensionIntegrationTest.java +++ b/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/CdiExtensionIntegrationTest.java @@ -18,8 +18,8 @@ package org.springframework.data.gemfire.repository.cdi; import static org.assertj.core.api.Assertions.assertThat; -import javax.enterprise.inject.se.SeContainer; -import javax.enterprise.inject.se.SeContainerInitializer; +import jakarta.enterprise.inject.se.SeContainer; +import jakarta.enterprise.inject.se.SeContainerInitializer; import org.junit.AfterClass; import org.junit.BeforeClass; diff --git a/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/GemfireCacheRegionProducer.java b/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/GemfireCacheRegionProducer.java index c37653c7..7dba8121 100644 --- a/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/GemfireCacheRegionProducer.java +++ b/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/GemfireCacheRegionProducer.java @@ -14,14 +14,14 @@ * limitations under the License. * */ - package org.springframework.data.gemfire.repository.cdi; -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.inject.Produces; import org.apache.geode.cache.Cache; import org.apache.geode.cache.CacheFactory; +import org.apache.geode.cache.GemFireCache; import org.apache.geode.cache.Region; import org.apache.geode.cache.RegionFactory; import org.apache.geode.cache.RegionShortcut; @@ -30,14 +30,15 @@ import org.springframework.data.gemfire.repository.sample.Person; import org.springframework.util.Assert; /** - * The GemfireCacheRegionProducer class is an application scoped CDI context bean that is responsible - * for creating the GemFire Cache "People" Region used to store {@link Person} instances. + * The {@link GemfireCacheRegionProducer} class is an application scoped CDI context bean that is responsible + * for creating the {@link GemFireCache} {@literal People} {@link Region} used to store {@link Person} instances. * * @author John Blum - * @see javax.enterprise.context.ApplicationScoped - * @see javax.enterprise.inject.Produces + * @see jakarta.enterprise.context.ApplicationScoped + * @see jakarta.enterprise.inject.Produces * @see org.apache.geode.cache.Cache * @see org.apache.geode.cache.CacheFactory + * @see org.apache.geode.cache.GemFireCache * @see org.apache.geode.cache.Region * @see org.apache.geode.cache.RegionFactory * @since 1.8.0 diff --git a/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryBeanTest.java b/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryBeanTest.java index d591d213..6dd26db4 100644 --- a/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryBeanTest.java +++ b/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryBeanTest.java @@ -34,9 +34,9 @@ import java.util.Set; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.atomic.AtomicBoolean; -import javax.enterprise.context.spi.CreationalContext; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; +import jakarta.enterprise.context.spi.CreationalContext; +import jakarta.enterprise.inject.spi.Bean; +import jakarta.enterprise.inject.spi.BeanManager; import org.junit.Test; import org.junit.runner.RunWith; @@ -278,7 +278,7 @@ public class GemfireRepositoryBeanTest { final AtomicBoolean repositoryProxyPostProcessed = new AtomicBoolean(false); GemfireRepositoryBean repositoryBean = - new GemfireRepositoryBean(this.mockBeanManager, PersonRepository.class, + new GemfireRepositoryBean<>(this.mockBeanManager, PersonRepository.class, Collections.emptySet(), newCustomRepositoryImplementationDetector(), null, CollectionUtils.asSet(mockRegionBean)) { diff --git a/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryExtensionTest.java b/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryExtensionTest.java index d1ac89dc..819e0844 100644 --- a/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryExtensionTest.java +++ b/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/GemfireRepositoryExtensionTest.java @@ -31,11 +31,11 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -import javax.enterprise.inject.spi.AfterBeanDiscovery; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; -import javax.enterprise.inject.spi.ProcessBean; -import javax.inject.Qualifier; +import jakarta.enterprise.inject.spi.AfterBeanDiscovery; +import jakarta.enterprise.inject.spi.Bean; +import jakarta.enterprise.inject.spi.BeanManager; +import jakarta.enterprise.inject.spi.ProcessBean; +import jakarta.inject.Qualifier; import org.junit.Before; import org.junit.Test; @@ -47,13 +47,14 @@ import org.springframework.data.gemfire.mapping.GemfireMappingContext; import org.springframework.data.gemfire.repository.GemfireRepository; /** - * The GemfireRepositoryExtensionTest class is a test suite of unit tests testing the contract and proper functionality - * of the {@link GemfireRepositoryExtension} class in a Java EE CDI context. + * Integration Tests for the {@link GemfireRepositoryExtension} class and functionality in a Java EE CDI context. * * @author John Blum - * @see javax.enterprise.inject.spi.Bean + * @see jakarta.enterprise.inject.spi.Bean + * @see jakarta.enterprise.inject.spi.BeanManager * @see org.junit.Test * @see org.mockito.Mockito + * @see org.apache.geode.cache.Region * @see org.springframework.data.gemfire.mapping.GemfireMappingContext * @see org.springframework.data.gemfire.repository.GemfireRepository * @see org.springframework.data.gemfire.repository.cdi.GemfireRepositoryExtension diff --git a/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/RepositoryClient.java b/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/RepositoryClient.java index 6836ca70..64abf54e 100644 --- a/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/RepositoryClient.java +++ b/spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/cdi/RepositoryClient.java @@ -14,21 +14,20 @@ * limitations under the License. * */ - package org.springframework.data.gemfire.repository.cdi; import java.util.concurrent.atomic.AtomicLong; -import javax.inject.Inject; +import jakarta.inject.Inject; import org.springframework.data.gemfire.repository.sample.Person; import org.springframework.util.Assert; /** - * The RepositoryClient class is a user/consumer of the {@link SamplePersonRepository} bean in a CDI context. + * {@link RepositoryClient} is a user/consumer of the {@link SamplePersonRepository} bean in a CDI context. * * @author John Blum - * @see javax.inject.Inject + * @see jakarta.inject.Inject * @see org.springframework.data.gemfire.repository.cdi.SamplePersonRepository * @since 1.8.0 */